python中字符的比较

2024-04-25 04:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个编程方面的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'

我能从中解释的是,'或'返回第一个元素,'和'返回第二个元素,但我不知道为什么会发生这种情况,有人能解释一下吗。我无法搜索这个,因为我不知道到底要搜索什么,为了这个。你知道吗


Tags: orandthe代码in元素if编程
3条回答

你想写char == "A" or char == "a"。你知道吗

在这个上下文中,orand将返回最后计算的值。or要求其中一个元素为true。当您检查"A" or "a"时,“A”立即计算为true,因此计算结束,并返回“A”。当您勾选"A" and "a"时,“A”立即计算为true,但是and也需要“A”,因此也会勾选它,并返回“A”。你知道吗

这种行为不太清楚。它主要用于检查无容器或空容器。你知道吗

对于那些对Python和许多其他语言感兴趣的人来说,这种andor逻辑是对所谓“正常顺序”的一种特殊采用,这种范式遵循“应用程序顺序”求值。查看超级棒SICP: https://mitpress.mit.edu/sicp/full-text/sicp/book/node85.html

一般来说,您应该使用or--1 > 2 or "a" in "abc"连接直接的布尔表达式,或者更好地使用集合包含:if char in {"A", "a"}。你知道吗

char == ( "A" or "a") 

计算结果为:

char == (True or True)

因为字符串在Python中是truthy,如果它们不是空的。比较char == True显然产生False。你知道吗

你想要的是in运算符

char in {"A", "a"}

相关问题 更多 >