将中间的2个elif 改为if后,为什么就会出错?

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,"奇数") if digit in [1,3,5,7,9] else print(i,"偶数")
    
# 将中间2个elif改为if会提示SyntaxError: unexpected EOF while parsing错误		


weibo_慕工程7133957
浏览 2238回答 5
5回答

MyFray

如果两个elif改成if如果没有最后的else也是可以的,只是会增加多判断,执行完第一个if之后如果成立,仍然会运行后面的if。但是,由于有else的存在,else只跟第三个if构成一对。也就是说如果i是a,在第四行判断一次,是a,打印出来,第6行判断一次不是a,不执行,第8行判断一次,不成立,并执行else,else中的eval把引号剥掉了,就成了一个变量名a赋值给digit,由于事先没有定义变量a,因此报错。

qq_慕仙8248301

python的判断语句的语法就是这样规定的if 条件:    执行语句elif 条件:    执行语句。。。。。。else:    执行语句
打开App,查看更多内容
随时随地看视频慕课网APP