我是一个编程方面的noob,我在codeaccademy上与python合作,我遇到了一段代码,它想通过X来改变短语中的'a'和'a's
phrase = "A bird in the hand..."
for char in phrase:
if char == "A" or char == "a":
print "X",
这段代码对我来说运行得很好,但是当我尝试将if语句更改为:
if char == ("A" or "a"):
只有短语中的A变成了X 当我把if语句改成
if char == ("A" and "a"):
只有短语中的a变成了X
我去了我的终端,尝试了几个字符之间的or和比较组合,得到了这些结果
>>> "a" or "A"
'a'
>>> "A" or "a"
'A'
>>> "A" and "a"
'a'
>>> "a" and "A"
'A'
>>> 2 or "a"
2
>>> 2 and "a"
'a'
>>> "a" and "b"
'b'
>>> "A" or 2
'A'
我能从中解释的是,'或'返回第一个元素,'和'返回第二个元素,但我不知道为什么会发生这种情况,有人能解释一下吗。我无法搜索这个,因为我不知道到底要搜索什么,为了这个。你知道吗
你想写
char == "A" or char == "a"
。你知道吗在这个上下文中,
or
和and
将返回最后计算的值。or
要求其中一个元素为true。当您检查"A" or "a"
时,“A”立即计算为true,因此计算结束,并返回“A”。当您勾选"A" and "a"
时,“A”立即计算为true,但是and
也需要“A”,因此也会勾选它,并返回“A”。你知道吗这种行为不太清楚。它主要用于检查无容器或空容器。你知道吗
对于那些对Python和许多其他语言感兴趣的人来说,这种
and
和or
逻辑是对所谓“正常顺序”的一种特殊采用,这种范式遵循“应用程序顺序”求值。查看超级棒SICP: https://mitpress.mit.edu/sicp/full-text/sicp/book/node85.html一般来说,您应该使用
or
--1 > 2 or "a" in "abc"
连接直接的布尔表达式,或者更好地使用集合包含:if char in {"A", "a"}
。你知道吗计算结果为:
因为字符串在Python中是
truthy
,如果它们不是空的。比较char == True
显然产生False
。你知道吗你想要的是
in
运算符相关问题 更多 >
编程相关推荐