Python 为什么';我的比较运算符不能在for循环中工作吗?

Python 为什么';我的比较运算符不能在for循环中工作吗?,python,Python,我是Python新手,已经编写了一个程序来确定输入的字符串中的字母是元音还是辅音。如果字母是元音,程序会打印“元音”,但如果是辅音,程序会打印辅音 我用两种不同的方式编写了这个程序,但我无法理解为什么第二个代码集不起作用。运行时,它会为输入的字符串中的所有字母返回“元音” #this code works word = input("Please enter a word: ") for letter in word.lower(): if letter == 'a':

我是Python新手,已经编写了一个程序来确定输入的字符串中的字母是元音还是辅音。如果字母是元音,程序会打印“元音”,但如果是辅音,程序会打印辅音

我用两种不同的方式编写了这个程序,但我无法理解为什么第二个代码集不起作用。运行时,它会为输入的字符串中的所有字母返回“元音”

#this code works
word = input("Please enter a word: ")
for letter in word.lower():
    if letter == 'a':
        print("vowel")
    elif letter == 'e':
        print("vowel")
    elif letter == 'i':
        print("vowel")
    elif letter == 'o':
        print("vowel")
    elif letter == 'u':
        print("vowel")
    else:
        print(letter)

#this code doesn't work

word = input("Please enter a word: ")
for letter in word.lower():
    if letter == 'a' or 'e' or 'i' or 'o' or 'u':
        print("vowel")
    else:
        print(letter)

如果我在第一个代码集中输入'David',它将返回[d,元音,v,元音,d]。我想知道为什么第二组代码的“for”语句中的逻辑不起作用。为什么我不能在第二个代码示例中使用比较运算符或?当运行第二组代码时,我得到的是字符串中所有字母返回的单词“元音”

,因此您会感到困惑, 在python中,bolean可能会非常混乱。 空列表,空字符将计算为False。 非空列表和字符将计算为True

# when your are doing :
if letter == 'a' or 'e' or 'i' or 'o' or 'u':
您正在测试字母=='a',但是'e'是否为非空字符。 正确的形式是:

if letter == 'a' or letter == 'e' or letter == 'i' or letter == 'o': # continue
在这里,您测试每种情况时,第一种方法和第二种方法都是等效的。

第二个代码示例的“if”语句有点缺陷-第一种方法后的每个“or”测试都返回true…尝试使用“if字母['a'、'e'、'i'、'o'、'u']”