亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

當 age = 8 時,結果正確,但 age = 20 時,為什么沒有打印出 adult?

age = 8
if age >= 6:
? ?print 'teenager'
elif age >= 18:
? ?print 'adult'
else:
? ?print 'kid'

當 age = 8 時,結果正確,但 age = 20 時,為什么沒有打印出 adult?

如果要修復,應該如何修復?


正在回答

6 回答

#!/usr/bin/env?python
#?-*-?coding:?utf-8?-*-
'''
task.py
當?age?=?8?時,結果正確,但?age?=?20?時,為什么沒有打印出?adult

age?=?8
if?age?>=?6:
????print?'teenager'
elif?age?>=?18:
????print?'adult'
else:
????print?'kid'
'''

#?age?=?int(raw_input('請輸入你的年齡:'))
age?=?20
if?age?>=?18:
????print?'adult'
elif?age?>=?6:
????print?'teenager'
else:
????print?'kid'


#?如果按照分數劃定結果:
#
#?????90分或以上:excellent
#
#?????80分或以上:good
#
#?????60分或以上:passed
#
#?????60分以下:failed

score?=?int(raw_input('請輸入你的成績:'))
if?score?>=?90:
????print?'excellent'
elif?score?>=?80:
????print?'good'
elif?score?>=?60:
????print?'passed'
else:
????print?'failed'


0 回復 有任何疑惑可以回復我~

分支結構進入一層就不會進入其他層了,我覺得修改判斷條件的順序邏輯上讓我很不舒服,所以把條件修改的更加嚴謹了,可以得到正確結果。

改正代碼:

age = 20?

if age >= 6 and age < 18:

? ? print 'tennger'

elif age >= 18:

? ? print 'adult'

else:

? ? print 'kid'


1 回復 有任何疑惑可以回復我~

特別注意:?這一系列條件判斷會從上到下依次判斷,如果某個判斷為 True,執行完對應的代碼塊,后面的條件判斷就直接忽略,不再執行了。

所以在:

age?=?20
if?age?>=?6:
????print?'teenager'
elif?age?>=?18:
????print?'adult'
else:
????print?'kid'

這個代碼里先執行第一個判斷,age>=6 因為age=20,這里判斷是true,直接打印'teenager'。而不再執行后面的判斷。

所以要修復這個問題,就應該使判斷條件較大的優先執行,更改后就是:

age?=?20
if?age?>=?18:
????print?'adult'

elif?age?>=?6:
????print?'teenager'
????
else?:
????print?'kid'

這樣,執行第一個判斷age>=18,這里age=20,判斷為true。打印'adult'。不執行后續語句。

如果,age=8,那么執行第一個判斷age>=18,? 就不符合,然后執行下一個age>=6,判斷為true。打印'teenager'不執行后續語句

能理解嗎。


9 回復 有任何疑惑可以回復我~

if ,elif,else 3個分支,執行任何一個都會程序執行結束。進入第一if條件后,雖然第二個elif條件也滿足,但是只會進入第一個。要如下改才可以:
age = 8
if age >= 18:
? ?print 'adult'
elif age >= 6:
? ?print 'teenager'

else:

? ?print 'kid'
注意:if ,elif,else 條件一定要嚴密。

1 回復 有任何疑惑可以回復我~

age = 8
if age >= 18:
? ?print 'adult'
elif?age >= 6:
? ?print 'teenager'

else:

? ?print 'kid'

這樣應該可以了

1 回復 有任何疑惑可以回復我~
#1

qq_聽風看月_0

這個第一個不匹配,不會打出adult,第二個條件匹配,結果輸出為teenager
2018-07-20 回復 有任何疑惑可以回復我~

因為這里是一個條件判斷 if,elif,else這里有3個分支,和其他編程語言一樣,進入了一個分支,肯定就不會進入第二個分支了,對應于你這里的代碼,執行流程就是,首先進來判斷8 >= 6,結果為True,進入分支打印teenager,然后程序就結束了,如果你每個條件都判斷,那么你就都寫if來判斷,而不是elif

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758392    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

當 age = 8 時,結果正確,但 age = 20 時,為什么沒有打印出 adult?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號