整个代码:
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次“
这是为什么?
答案 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']: