这是我目前拥有的代码:
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" or "E" in letter:
etimes += 1
if "e" or "E" in message:
print("in your message", etimes, "times")
else:
print("is not in your message")
为什么如果您以
message
输入的内容包含“ e”,则输出声称它具有与字符所包含的消息一样多的“ e”?举个例子:如果我输入消息“你好吗”,它将回复:
“您的邮件长度为11个字符
英语中最常见的字母“ e”在您的信息中出现11次”
为什么它不回应:
“您的邮件长度为11个字符
英语中最常见的字母“ e”在您的信息中出现了1次”
因为没有
for letter in message:
if "e" or "E" in letter:
etimes += 1
一次遍历“您好吗”一个元素(字符):
letter = "h"
letter = "o"
letter = "w"
letter = " "
letter = "a"
letter = "r"
letter = "e"
letter = " "
letter = "y"
letter = "o"
letter = "u"
如果上述情况成立,则只有在
letter = "e"
的时间if "e" or "E" in letter:
是
true
,对吗?这意味着etimes
应该只等于一个? 最佳答案
for letter in message:
if "e" or "E" in letter:
etimes += 1
更改为:
for letter in message:
if letter.lower() == 'e':
etimes += 1
您的代码失败,因为未按您认为的方式读取
or
语句。if "e" or "E" in letter:
由解释器读取(以伪代码):
if 'e' exists OR if 'E' in letter:
or more pseudo code
if True or if 'E' in letter:
由于
or
的工作方式:true or false = true # what your logic was producing
true or true = true
false or false = false
要正确使用
or
,您必须每次都明确声明比较:if "e" in letter or "E" in letter:
这就是为什么在比较字符串(如果大小写不重要)时的原因,因为在这种情况下,“ e”与“ E”相同,所以最好通过
lower()
或upper()
将大小写更改为相同。不必比较太多东西。关于python - 循环查找字母程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21589807/