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

如何修复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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:36:02