python 语句判断问题

while True:
try:
num=input()
n=int(num)
break
except:
print('illegal input')

if str(3) or str(4) in str(n):
print('true')
else:
print('false')

#为什么一直输出 true啊?

你要知道一件事,就是or和and 的优先级很低,就是str(3) or str(4) in str(n)里面,实际 相当于str(3) or (str(4) in str(n))
就是str(4) in n和str(3)中选一个,因为str(3)的话会造成类似True的效果,就是只要你输入的是数字,就会输出true
应该改成if “3” in str(n) or "4" in str(n):

因为成员运算符in 的优先级比逻辑运算符or的优先级高
所以str(3) or str(4) in str(n) 永远都是True

给你改了一下,望采纳,谢谢

while True:
    try:
        num=input()
        n=int(num)
        break
    except:
        print('illegal input')

if '3' in str(n) or '4' in str(n):
    print('true')
else:
    print('false')

img

python的语法,是靠缩进来控制执行的顺序的。建议看一看打日志看一下执行