print('a' in 'aa')
print('a' in 'aa' == True)
print(('a' in 'aa') == True)
print('a' in ('aa' == True))
输出为
True
False
True
Traceback (most recent call last):
File "main.py", line 6, in <module>
print('a' in ('aa' == True))
TypeError: argument of type 'bool' is not iterable
如果第2行既不是第3行也不是第4行,那是什么?它怎么会变成假?
答案 0 :(得分:7)
print('a' in 'aa' == True)
评估为
'a' in 'aa' and 'aa' == True
是False
。
请参见
print("a" in "aa" and "aa" == True)
==> False
其余的内容微不足道-有助于牢记operator precedence来解决它们。
类似的:
具有不同的语句。我标记为欺骗,但用户界面不正确-我回答得越来越少,以解释为什么您的完全打印了它的内容。
答案 1 :(得分:1)
案例1:很简单,答案是True
。
print('a' in 'aa')
情况2:此操作的值为'a' in 'aa' and 'aa' == True
,因此显然它将返回false。
print('a' in 'aa' == True)
案例3:现在,由于()
包含('a' in 'aa')
,并且()
的优先级最高,因此首先将'a' in 'aa'
评估为True
,然后然后True == True
print(('a' in 'aa') == True)
情况4:与上述情况相同,因为优先级为()
,其优先级为'aa' == True
,在尝试将in
应用于不可迭代的bool时,将导致错误值。
print('a' in ('aa' == True))