You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:22:04