Python多if-else分支后统一执行print语句及税率赋值错误修复
核心问题
Python变量名区分大小写,你的代码里实际上定义了两个完全独立的税率变量:
- 代码开头初始化的是首字母大写的
taxRate,初始值为0 - 所有if分支内赋值的是全小写的
taxrate,和前者没有关联
你在分支里修改的只是全小写的taxrate,最后打印用的还是从未更新过的大写taxRate,所以输出永远是0。
另外你的代码还存在其他隐性问题:
- 负收入场景打印错误提示后,后续的打印语句仍会执行,会报错找不到
taxableIncome变量 - 使用
eval(input())存在安全风险,用户输入任意代码都会被执行 - 税级描述硬编码为最低区间,和实际收入区间不匹配
- 税费计算重复写在每个分支里,没有完全实现复用优化
修复后的完整代码
tax_rate = 0.0 tax_bracket = "" print("请输入员工年度应税收入(单位:加元CAD):") # 用float转换替代eval,避免代码注入风险 income = float(input()) if income < 0: print("薪资不能为负数") # 错误输入直接退出,避免后续执行报错 exit() elif 0 <= income < 33389.01: tax_rate = 0.108 tax_bracket = "10.8% [$0 .. $33389.01)" elif 33389.01 <= income < 72164.01: tax_rate = 0.1275 tax_bracket = "12.75% [$33389.01 .. $72164.01)" else: # 收入大于等于72164.01加元 tax_rate = 0.174 tax_bracket = "17.4% [$72164.01 .. )" # 统一计算税费,不用重复写在每个分支 taxable_income = income * tax_rate print(f"员工应缴省税金额:CAD($) {round(taxable_income, 2)}") print(f"员工对应税级:{tax_bracket}")
补充说明
你之前的原始代码存在分支内税率赋值和实际计算数值不一致的问题(比如第一个分支给taxrate赋值0.108,实际计算时乘的是0.125),如果是业务设计如此,可以自行调整修复后代码里的税率数值。
内容的提问来源于stack exchange,提问作者user7123308
相关产品推荐
相关产品推荐

