Python条件语句异常求助:输入Ontario为何返回0.05税率?
问题分析与解决
核心错误出在这行代码:if province.lower() == 'alberta' or 'nunavut':
这是逻辑判断的写法错误:or运算符需要连接两个完整的布尔条件,而当前写法中,'nunavut'是一个非空字符串,在布尔语境下会被判定为True。这就导致无论你输入哪个省份,这个if条件都会成立,直接将tax设为0.05,自然不会走到ontario对应的elif分支。
修正后的代码方案1(补全完整条件)
country = input('Where are you from? ') if country.lower() == 'canada': province = input('which province are you living in? :') # 补全or两边的完整判断条件 if province.lower() == 'alberta' or province.lower() == 'nunavut': tax = 0.05 elif province.lower() == 'ontario': tax = 0.13 else: tax = 0.15 print('your tax is ' + str(tax)) else: print("Welcome tourist, you don't pay any taxes")
修正后的代码方案2(用in简化判断)
如果要避免重复写province.lower(),可以先把转换后的结果存起来,再用in判断,代码更简洁:
country = input('Where are you from? ') if country.lower() == 'canada': province = input('which province are you living in? :') province_low = province.lower() if province_low in ('alberta', 'nunavut'): tax = 0.05 elif province_low == 'ontario': tax = 0.13 else: tax = 0.15 print('your tax is ' + str(tax)) else: print("Welcome tourist, you don't pay any taxes")
内容的提问来源于stack exchange,提问作者mtlcoder
相关产品推荐
相关产品推荐

