将"in"与"or"结合使用

  • 本文关键字:结合 in or 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 次"这是为什么呢?

在许多情况下,你在编程语言中陈述逻辑条件的方式与正常的会话英语不匹配。代码中的or运算符分隔两个表达式,每个表达式的计算结果是布尔值 True 还是 False。

可以这样想:你实际上是在说"如果 expr1 为真,和/或 expr2 为真,请做某事"。Expr1 是文字"e",它总是计算为 True——粗略地说,除了空字符串或零或None计算值为 True 以外的值。Expr2 是表达式 "E" in letter ,根据 letter 的值,它可以是 True 或 False。但是,由于 expr1 为 True,因此永远不会计算 expr2 - or的计算不会超过第一个 True 值。

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

您还可以使相同的测试更直接,例如 "if letter.lower() == "e"if letter in ("e", "E") .

if "e" or "E" in letter

该行可以细分如下:

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

要正确地做到这一点,您需要说:

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

或者你可以做:

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

最新更新