为何str()会将数字输入转为字符串?如何限制仅接受指定水泥选项?
解决办法
可以通过循环验证输入的方式,确保用户只能输入指定的两个选项,具体实现有两种方案:
方案1:直接验证有效选项
这种方式直接判断输入是否属于允许的选项,自动排除数字和其他无效内容:
allowed_options = {"premium cement", "standard cement"} while True: cement = input("Do you want premium cement or standard cement? ").strip() if cement in allowed_options: print(f"你选择了: {cement}") break else: print("无效输入,请输入「premium cement」或「standard cement」")
- 用
strip()去掉输入前后的空格,避免用户不小心输入空格导致验证失败 - 用集合存允许的选项,判断起来更快
- 循环会一直运行,直到用户输入有效选项才停止
方案2:明确拦截数字输入
如果需要专门提示用户不能输数字,可以加一层数字检测:
allowed_options = {"premium cement", "standard cement"} while True: cement = input("Do you want premium cement or standard cement? ").strip() if any(char.isdigit() for char in cement): print("输入不能包含数字,请重新输入") elif cement in allowed_options: print(f"你选择了: {cement}") break else: print("无效输入,请输入「premium cement」或「standard cement」")
any(char.isdigit() for char in cement)会扫描输入里的每个字符,只要有数字就触发提示- 先检查数字再验证选项,错误提示更精准
内容的提问来源于stack exchange,提问作者Israr
相关产品推荐
相关产品推荐

