如何修复Python货币兑换代码pylint的pointless-statement告警
报错原因
你代码中三处else: COST的写法是触发W0104警告的核心原因。单独写变量名属于无任何实际作用的表达式,既没有修改变量值,也没有对外输出,pylint判定为无效语句所以抛出警告。你的业务逻辑里,当手续费在FEE_MIN和FEE_MAX之间时,本来就不需要修改COST的值,所以这个else分支完全是多余的。
最小改动修复方案
直接删除三处的else分支即可,不需要做其他调整,修改后的手续费判断逻辑如下:
if COST <= FEE_MIN: COST = FEE_MIN elif COST > FEE_MAX: COST = FEE_MAX
修改后重新运行pylint就不会再触发该警告。
代码优化建议(可选)
你当前的代码重复度很高,三种货币的兑换逻辑几乎完全一致,仅汇率和提示文本不同,可以通过字典映射抽离公共逻辑,减少冗余,同时修复了原代码中choise的拼写错误:
# 汇率配置,key为选择编号,value为(汇率, 货币名称) CURRENCY_CFG = { 1: (0.8500, "dollars"), 2: (1.1700, "pounds"), 3: (0.0077, "yen's") } RATE = 0.015 FEE_MIN = 2.00 FEE_MAX = 15.00 choice = int(input("Which currency do you want to exchange for euros? " "1) USD dollar,2) GB pound, 3) JP yen : ")) if choice not in CURRENCY_CFG: print("Invalid choice") exit() exchange_rate, currency_name = CURRENCY_CFG[choice] foreign = round(float(input(f"What amount of {currency_name} do you want to convert to euros? : "))) euros = round(foreign * exchange_rate, 2) cost = euros * RATE # 手续费边界处理 if cost <= FEE_MIN: cost = FEE_MIN elif cost > FEE_MAX: cost = FEE_MAX payout = euros - cost print("The transactioncost are: {:.2f}.".format(cost)) print("You'll receive {:.2f} euros.".format(payout))
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

