为什么我没有得到布尔值?

Sam*_*cht 4 python operators boolean-expression

>>> 'a' in 'aeiou' or 'steve'
True
>>> 'S' in 'Sam' and 'Steve'
'Steve'
>>> 'a' in 'aeiou' and 'steve'
'steve'
>>> 's' in 'aeiou' or 'AEIOU'
'AEIOU'
Run Code Online (Sandbox Code Playgroud)

我正在为一些学生上课,并对最后三个输出感到惊讶.我期待一个布尔值.任何人都可以对此有所了解吗?

Viv*_*ble 5

布尔运算

  1. 要么

x或y | 如果x为假,那么y,否则为x

演示

>>> 0 or 1
1
>>> 0 or 0
0
Run Code Online (Sandbox Code Playgroud)

x和y | 如果x为假,则为x,否则为y

演示

>>> 0 and 1
0
>>> 1 and 0
0
>>> 1 and 1
1
>>> 
Run Code Online (Sandbox Code Playgroud)

注意: 如果结果需要,这些仅评估他们的第二个参数.


True否则,当条件满足时,这将返回False.

演示:

>>> "a" in "abc"
True
>>> "a" in "xyz"
False
>>> 
Run Code Online (Sandbox Code Playgroud)

现在关于我们的声明:

1.作为'a' in 'aeiou'返回True值,我们正在执行or操作,因此这将返回,True因为表达式的First(Left)值是True.

演示:

>>> 'a' in 'aeiou'
True
>>> 'a' in 'aeiou' or 'steve'
True
>>> 
Run Code Online (Sandbox Code Playgroud)

2.作为'S' in 'Sam'返回True并且我们正在执行and操作,因此这将从表达式返回第二个值.

演示:

>>> 'S' in 'Sam'
True
>>> 'S' in 'Sam' and 'Steve'
'Steve'
>>> 
Run Code Online (Sandbox Code Playgroud)

3.与第二个陈述相同.

4.作为's' in 'aeiou'返回False并且我们正在执行or操作,因此这将从表达式返回第二个值.

演示:

>>> 's' in 'aeiou'
False
>>> 's' in 'aeiou' or 'AEIOU'
'AEIOU'
>>> 
Run Code Online (Sandbox Code Playgroud)