这是我目前拥有的代码:

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/

10-16 01:02