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
相关产品推荐
相关产品推荐

