Python中如何使用while循环对两个输入货币字符串做合法性校验?
代码问题修正
原代码存在的错误点
- 合法货币列表的定义语法错误,既没有赋值给变量,也误用了
list关键字的写法 - while循环的判断条件语法错误:Python中判断元素是否属于序列使用
in关键字,不存在!= from的写法,同时逻辑判断的表达式结构错误 print语句没有加括号,不符合Python3的语法规范break语句放在了while循环外部,完全不生效,且当前场景不需要额外添加break,满足循环终止条件会自动退出循环- 冗余写法:
input()本身返回字符串,不需要额外套str()做类型转换
修正后可运行代码
# 先定义合法货币列表 valid_currencies = ["usd", "eur", "cad", "inr", "jpy", "vnd", "krw", "btc"] # 首次输入,加lower()兼容大小写输入 num1 = input("支持兑换的货币: usd, eur, cad, inr, jpy, vnd, krw, btc。请输入当前持有货币: ").lower() num2 = input("请输入目标兑换货币: ").lower() num1amount = int(input("请输入兑换金额: ")) # 只要任意一个货币不合法就循环重新输入 while num1 not in valid_currencies or num2 not in valid_currencies: print("输入的货币不合法: ") num1 = input("支持兑换的货币: usd, eur, cad, inr, jpy, vnd, krw, btc。请输入当前持有货币: ").lower() num2 = input("请输入目标兑换货币: ").lower() num1amount = int(input("请输入兑换金额: ")) # 后续兑换逻辑可继续写在这里
可选优化
- 可以单独拆分输入逻辑为函数,避免重复写多行输入代码
- 可以加异常捕获,避免用户输入非数字的金额时程序报错
内容的提问来源于stack exchange,提问作者17oreo
相关产品推荐
相关产品推荐

