Python中if/else循环的问题

1 python if-statement

我正在尝试用Python创建这个Pig Latin翻译器,它一直运行良好,直到我试图缩小它一点.

有人可以看看这段代码并告诉我为什么,当我在开头输入一个没有元音的单词时,它仍会在这个if语句中打印"元音"代码?

码:

pyg = 'ay'

original = raw_input('Enter a word: ')
low_original = original.lower()

if len(low_original) > 0 and low_original.isalpha():
        print low_original
        if low_original[0] == 'a' or 'e' or 'i' or 'o' or 'u':
                print "vowel"
                pyg_vowel = low_original + pyg
                print pyg_vowel
        else:
                print "consonant"
                pyg_cons = low_original[1: ] + low_original[0] + pyg
                print pyg_cons
else:
        print 'empty'
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 8

你需要分别检查所有的元音.

目前,您的if条件评估为: -

if (low_original[0] == 'a') or 'e' or 'i' or 'o' or 'u':
Run Code Online (Sandbox Code Playgroud)

or返回其条件中的第一个真值,该值将在此处Truee此处,具体取决于您的第一个条件是否为True.现在,因为'e'被评估为True,所以这两个值都是true,因此你的条件将始终如此true.

你应该这样做: -

if low_original[0] in 'aeiou':
Run Code Online (Sandbox Code Playgroud)

要么: -

if low_original[0] in ('a', 'e', 'i', 'o', 'u'):
Run Code Online (Sandbox Code Playgroud)