Python while循环异常求助:输入合法选项仍触发重试提示
问题修正:Python输入验证循环逻辑错误
你的代码出现问题的核心原因是逻辑表达式写法错误,导致循环条件始终成立,即便输入正确选项也会触发重试提示:
while option.lower() != 'A' or 'B' or 'C'这种写法的逻辑是:只要option.lower() != 'A'为真,或者'B'本身为真(非空字符串在Python中永远是布尔真),或者'C'为真,条件就成立。这意味着无论输入什么,循环都会一直执行。- 同时你将输入转成小写后,却和大写的
'A'/'B'/'C'比较,逻辑不匹配。 - 后续的
if判断也重复了同样的错误。
修正后的代码
option = input('\nChoose A, B or C: ').strip().lower() while option not in {'a', 'b', 'c'}: print('\nThat option is not available, try again') option = input('\nChoose A, B or C: ').strip().lower() print(f'You chose: {option.upper()}')
关键修正点
- 添加
strip()去除输入前后的空格,避免用户误输入带空格的无效内容 - 统一将输入转成小写,用
not in {'a', 'b', 'c'}判断是否属于有效选项,逻辑清晰且高效 - 循环结束后直接打印结果,无需额外
if判断(循环已确保option为有效选项) - 用
upper()将结果转回大写,符合常规输入展示习惯
内容的提问来源于stack exchange,提问作者Carlos De Avila
相关产品推荐
相关产品推荐

