为什么我的比较运算符不能在for循环中使用?

时间:2019-01-24 14:41:30

标签: python

我是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”语句中的逻辑不起作用。为什么不能在第二个代码示例中使用比较运算符“或”?运行第二组代码时,我得到的是字符串中所有字母返回的单词“元音”

1 个答案:

答案 0 :(得分:0)

所以你有一个困惑, 在python bolean中可能会非常混乱。 空列表,空字符将评估为False。 非空列表,并且char将评估为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

在这里,您测试每种情况的第一方法和第二方法都是等效的。