Python初学者while循环条件判断逻辑异常问题求助
问题原因分析
- 核心错误出在条件判断的语法逻辑不符合Python规则:你写的
if compAI == "1" or "2" or "3"并不会按你预期的「判断compAI是否是1、2、3中的任意一个」执行。逻辑运算符or连接的是两个完整的布尔表达式,上述代码实际的运算逻辑是(compAI == "1") or ("2") or ("3"),而Python中非空字符串的布尔值恒为True,所以整个if条件永远为真,自然不会进入后续分支。 - 其次你写的elif条件本身也有逻辑问题,就算语法正确,
or在这里也应该替换为and才符合你要判断「输入不等于1且不等于2且不等于3」的需求,而且完全可以用else分支替代,不需要重复判断。
修正后的代码示例
compReady = False while compReady == False: compAI = input("Which strategy for the computer [1,2,3]? ") # 两种正确的判断写法,选一种即可 # 写法1:完整写全判断条件 if compAI == "1" or compAI == "2" or compAI == "3": compReady = True # 写法2:用in运算符更简洁 # if compAI in ("1", "2", "3"): # compReady = True else: print("Please enter either 1, 2, or 3.")
内容的提问来源于stack exchange,提问作者Jai Knowles
相关产品推荐
相关产品推荐

