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

Python货币转换项目引入elif或else语句后运行异常求助

错误原因说明

你的代码存在3个核心问题:

  • 条件判断逻辑错误
    currentCurrency == "CAD" or "cad"的写法不符合Python语法规则,这段代码会被解析为「判断currentCurrency等于CAD,或者字符串"cad"为真」,而非你想的「判断currentCurrency等于CAD或者cad」。非空字符串的布尔值永远为真,所以不管你输入什么货币,第一个if条件永远成立。更简单的写法是直接把输入转成大写/小写再判断,不用同时处理两种大小写情况。
  • 分支嵌套逻辑完全错误
    你把所有目标货币的判断都嵌套在了上一个目标货币的判断代码块内,比如判断完目标货币是USD的if块里又套了目标货币是EUR的判断,只有当目标货币同时是USD和EUR的时候才会走到后续逻辑,这显然不可能实现。同时你把USD对应的分支写在了CAD转换最内层的INR判断代码块里,永远不可能被触发。
  • 语法规则错误
    else requiredCurrency == "CAD" or "cad"是非法写法,else后面不能附加判断条件,带条件的分支需要使用elif。

修正后的可用代码

CAD_USD = 0.9785
CAD_EUR = 0.7935
CAD_GBP = 0.6387
CAD_YEN = 79.9794
CAD_CNY = 6.4295
CAD_CHF = 0.9614
CAD_INR = 53.8968

# 美元对其他货币汇率
USD_CAD = 1.0220
USD_EUR = 0.7764
USD_GBP = 0.6250
USD_YEN = 78.2584
USD_CNY = 6.2895
USD_CHF = 0.9407
USD_INR = 52.7345

# 提示用户输入
currentCurrency = input("请输入你持有的货币:").upper()
requiredCurrency = input("请输入你要兑换的目标货币:").upper()
currentAmount = float(input("请输入持有的货币金额:"))

# CAD转换逻辑
if currentCurrency == "CAD":
    if requiredCurrency == "USD":
        conversion = currentAmount * CAD_USD
    elif requiredCurrency == "EUR":
        conversion = currentAmount * CAD_EUR
    elif requiredCurrency == "GBP":
        conversion = currentAmount * CAD_GBP
    elif requiredCurrency == "YEN":
        conversion = currentAmount * CAD_YEN
    elif requiredCurrency == "CNY":
        conversion = currentAmount * CAD_CNY
    elif requiredCurrency == "CHF":
        conversion = currentAmount * CAD_CHF
    elif requiredCurrency == "INR":
        conversion = currentAmount * CAD_INR
    else:
        print("不支持的目标货币")
        exit()
    res = round(conversion)
    print(f"{currentAmount} CAD 等价于 {res} {requiredCurrency}")
# USD转换逻辑
elif currentCurrency == "USD":
    if requiredCurrency == "CAD":
        conversion = currentAmount * USD_CAD
    elif requiredCurrency == "EUR":
        conversion = currentAmount * USD_EUR
    elif requiredCurrency == "GBP":
        conversion = currentAmount * USD_GBP
    elif requiredCurrency == "YEN":
        conversion = currentAmount * USD_YEN
    elif requiredCurrency == "CNY":
        conversion = currentAmount * USD_CNY
    elif requiredCurrency == "CHF":
        conversion = currentAmount * USD_CHF
    elif requiredCurrency == "INR":
        conversion = currentAmount * USD_INR
    else:
        print("不支持的目标货币")
        exit()
    res = round(conversion)
    print(f"{currentAmount} USD 等价于 {res} {requiredCurrency}")
else:
    print("暂时只支持CAD和USD作为持有货币")

内容的提问来源于stack exchange,提问作者user17162404

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:09:02