如何实现输入<0时终止程序并按字母序输出最低税率相同的国家
优化Python税率计算程序:处理负数收入终止与多最低税率排序输出
功能实现目标
- 输入收入值小于0时,程序立即终止运行
- 当多个国家的最低税率相同时,按字母顺序输出这些国家名称
修复并优化后的代码
while True: income = int(input('Income: ')) # 输入负数直接终止程序 if income < 0: break # Canada 税率计算 canada_tax_rate = 0.26 canada = canada_tax_rate * income # Norway 税率计算(修复原代码未处理income=3000的bug) if income > 3000: norway_tax1 = 0.1 * 3000 tax_left = income - 3000 norway_tax2 = 0.4 * tax_left norway_tax = norway_tax1 + norway_tax2 else: norway_tax = 0.1 * income # Denmark 税率计算(修复原代码重复计算余数的bug) denmark_tax = 0 percent = 0 thousands = income // 1000 remainder = income % 1000 for _ in range(thousands): denmark_tax += percent * 1000 percent += 0.1 denmark_tax += percent * remainder # USA 税率计算 if income <= 1500: USA_tax = 0.12 * income elif 1500 < income <= 6000: USA_tax = 0.25 * income elif 6000 < income <= 10000: USA_tax = 0.38 * income else: USA_tax = 0.15 * income # 整理所有国家的税率与名称 tax_records = [ (canada, 'Canada'), (norway_tax, 'Norway'), (denmark_tax, 'Denmark'), (USA_tax, 'USA') ] # 找到最低税率值 min_tax_value = min(record[0] for record in tax_records) # 筛选出所有税率等于最低值的国家,并按字母排序 lowest_countries = sorted([country for tax, country in tax_records if tax == min_tax_value]) # 输出结果 print(f'Lowest tax: {min_tax_value}') print(' '.join(lowest_countries))
关键修改说明
- 循环逻辑优化:改用
while True循环,输入后立即判断收入是否为负,是则直接break终止,避免无效计算 - 修复挪威税率计算bug:原代码未处理
income=3000的情况,改用else覆盖所有收入≤3000的场景,避免变量未定义报错 - 修复丹麦税率计算bug:原循环中重复计算余数部分,调整为仅在循环结束后计算一次余数的税,确保计算准确
- 多最低税率处理:将税率与国家名存入列表,通过
min()获取最低税率值,筛选所有符合条件的国家后用sorted()按字母排序,最后用join()输出 - 代码可读性提升:调整变量命名(如
canada_tax改为canada_tax_rate),拆分复杂计算步骤,使逻辑更清晰
内容的提问来源于stack exchange,提问作者Bobby Jackson
相关产品推荐
相关产品推荐

