Python中while循环无法终止,请问是什么原因导致的?
问题根源
你编写的while循环判断条件存在语法逻辑错误:
在Python中,x != int(11) or int(22) or int(33)...这类写法不会按你预期的「判断x不等于所有列出的数值」执行,程序会将or连接的每一项单独判断布尔值:非0整数的布尔值恒为True,所以整个判断条件永远返回True,循环自然不会终止。
即使要写多条件不等于判断,正确写法也应该是x != 11 and x != 22 and x != 33...,用and而非or连接,因为只要x等于其中任意一个重复数值,就需要终止循环,只有x不等于所有目标值的时候才需要继续执行循环。
修复方案
方案1:用成员运算符简化判断
不需要写大量重复的不等于判断,直接用in判断x是否在目标值集合中即可,代码更简洁易读:
x = input() x = int(x) print(x) while x not in {11,22,33,44,55,66,77,88,99}: x -= 1 print(x)
方案2:通用逻辑判断(无需手动枚举目标值)
直接通过位运算判断两位数的十位和个位是否相等,适配性更强,不需要手动列全所有重复数值:
x = input() x = int(x) print(x) # x//10取十位数字,x%10取个位数字 while x // 10 != x % 10: x -= 1 print(x)
内容的提问来源于stack exchange,提问作者Eric Escudero
相关产品推荐
相关产品推荐

