我是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”语句中的逻辑不起作用。为什么不能在第二个代码示例中使用比较运算符“或”?运行第二组代码时,我得到的是字符串中所有字母返回的单词“元音”
答案 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
在这里,您测试每种情况的第一方法和第二方法都是等效的。