如何让Python税费计算代码正常运行且函数内保留数值并承担主要逻辑?
修正后的税费计算代码及说明
原代码存在几个核心问题:
- 输入的
choice是字符串(比如'a'或'b'),直接和数值相乘会触发类型错误,而且函数里定义的a、b变量根本没用到 - 函数用
print输出结果,没有返回值,导致后面format的时候拿到的是None,输出会出错 - 没有把价格数据的逻辑完全封装在函数里
下面是修正后的代码,满足「函数承担主要计算工作、价格保留在函数内部」的要求:
def tax(choice): # 商品价格完全保留在函数内部,外部无需知晓具体数值 item_prices = { 'a': 1.4, 'b': 2.2 } # 把输入转为小写,兼容大小写输入 selected_price = item_prices.get(choice.lower()) # 处理无效输入的情况 if selected_price is None: return "无效选择,请输入a或b" # 计算含税总价(税率12%),保留两位小数符合货币格式 total_cost = selected_price * 1.12 return round(total_cost, 2) print("What will you buy?") print("[a] Salt - $1.40") print("[b] Pepper - $2.20") choice = input("请输入你的选择(a/b):") result = tax(choice) # 判断结果类型,分别处理有效和无效输入的输出 if isinstance(result, float): print(f"It will cost ${result:.2f}") else: print(result)
关键修正说明
- 用字典
item_prices存储商品价格,完全封装在函数内部,外部只需要传入选择项即可 - 函数负责价格匹配、税费计算、异常输入处理,核心逻辑都在函数里完成,外部只做输入和输出
- 函数返回计算结果(或错误提示),而不是直接打印,职责划分更清晰
- 增加了大小写兼容和无效输入处理,代码更健壮
内容的提问来源于stack exchange,提问作者James Brodie
相关产品推荐
相关产品推荐

