weibo_慕工程7133957
2018-11-21 11:56:38
T='12a34b56c'
for?i?in?T:????????
????if?i?==?'a':????????????
????????print(i,'年')????????
????elif?i?==?'b':????????????
????????print(i,'月')????????
????elif?i?==?'c':????????????
????????print(i,'日')????????
????else:????????????
????????digit=eval(i)????????????
????????print(i,"奇數(shù)")?if?digit?in?[1,3,5,7,9]?else?print(i,"偶數(shù)")
????
#?將中間2個(gè)elif改為if會提示SyntaxError:?unexpected?EOF?while?parsing錯(cuò)誤
5 回答

MyFray
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
如果兩個(gè)elif改成if如果沒有最后的else也是可以的,只是會增加多判斷,執(zhí)行完第一個(gè)if之后如果成立,仍然會運(yùn)行后面的if。
但是,由于有else的存在,else只跟第三個(gè)if構(gòu)成一對。
也就是說如果i是a,在第四行判斷一次,是a,打印出來,第6行判斷一次不是a,不執(zhí)行,第8行判斷一次,不成立,并執(zhí)行else,else中的eval把引號剝掉了,就成了一個(gè)變量名a賦值給digit,由于事先沒有定義變量a,因此報(bào)錯(cuò)。

qq_慕仙8248301
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
python的判斷語句的語法就是這樣規(guī)定的
if 條件:
????執(zhí)行語句
elif 條件:
????執(zhí)行語句
。。。。。。
else:
????執(zhí)行語句
添加回答
舉報(bào)
0/150
提交
取消