Python中if多值不等判断逻辑错误致循环无法退出的解决方法
问题分析与解决方案
你的代码陷入死循环的核心原因是条件判断的逻辑错误:
原代码中的if n != 5 or 10 or 25写法完全不符合Python的布尔运算规则。在Python中,or连接的是独立的布尔表达式,10和25作为非零数值,会被直接判定为True。因此这个条件等价于(n !=5) or True or True,无论输入什么值,整个表达式永远为True,导致循环一直执行continue,无法退出。
正确的修改方式
有两种简洁且正确的写法可以实现需求:
方式1:使用not in判断(推荐)
利用元组存储合法值,用in运算符判断输入是否在合法范围内,代码更简洁易读:
def get_paid(y): while True: n = int(input("Insert Coin: ")) if n not in (5, 10, 25): print(f"Amount Due: {y}") continue break return n
方式2:修正逻辑运算符
用and连接多个不等于的判断,确保输入同时不满足三个合法值时才提示重新输入:
def get_paid(y): while True: n = int(input("Insert Coin: ")) if n != 5 and n != 10 and n != 25: print(f"Amount Due: {y}") continue break return n
两种写法都能实现:输入5、10、25时退出循环,其他值则重复提示用户输入。
内容的提问来源于stack exchange,提问作者bwags
相关产品推荐
相关产品推荐

