使用“in”和“or”

时间:2014-02-08 20:26:06

标签: python

整个代码:

message = input("Enter a message: ")
etimes = 0
print("Your message is",len(message),"characters long")

print("The most common letter in the english language, 'e', is ", end="")
for letter in message:
    if "e" in letter:
        etimes += 1

if "e" or "E" in message:
    print("in your message", etimes, "times")
else:
    print("is not in your message")

为什么

if "e" in letter:
            etimes += 1

正常工作,但如果我要将其更改为

if "e" or "E" in letter:
            etimes += 1
它没有?如果我使用这个代码,它会告诉我有很多“e”,因为我的消息很长 例如:message = "hello"将返回“您的消息长度为5个字符 英语中最常见的字母“e”在你的留言中1次“ 这是为什么?

2 个答案:

答案 0 :(得分:1)

在许多情况下,您在编程语言中陈述逻辑条件的方式与正常的会话英语不匹配。代码中的or运算符将两个表达式分开,每个表达式都会被计算,以查看它是否计算为布尔值True或False。

这样想:你实际上在说“如果expr1是真的,和/或expr2是真​​的,那就做点什么”。 Expr1是文字"e",它总是计算为True - 粗略地说空字符串以外的值或零或None评估为True。 Expr2是表达式"E" in letter,根据letter的值,它可以是True或False。但是,由于expr1为True,因此永远不会对expr2进行求值 - or将不会在第一个True值之后进行求值。

用英语陈述逻辑测试的方法是“if”e“是字母或”E“是字母”。在代码中,您可以使用完全相同的语法。

您也可以更简单地进行相同的测试,例如"if letter.lower() == "e"if letter in ("e", "E")

答案 1 :(得分:0)

if "e" or "E" in letter

该行可以按如下方式细分:

if "e":if "E" in letter:

要做得对,你需要说:

if letter == "e"  or letter == "E":

或者你可以这样做:

if letter in ['e', 'E']: