python - Python 中 if/else 循环的问题

标签 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'

最佳答案

您需要分别检查所有元音。

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

if (low_original[0] == 'a') or 'e' or 'i' or 'o' or 'u':

or 返回其条件中的第一个真值,此处为 Truee,具体取决于您的第一个条件为 True 或不是。现在,由于 'e' 被评估为 True,因此两个值都是 true,因此您的条件将始终为 true.

你应该这样做:-

if low_original[0] in 'aeiou':

或:-

if low_original[0] in ('a', 'e', 'i', 'o', 'u'):

关于python - Python 中 if/else 循环的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13305089/

相关文章:

javascript - 如何循环 if/else 语句(JavaScript)?

javascript for...in + if-test(在表单内的开关内部)

c - C 中没有 else 的三元运算符

python - Xlsxwriter 计数/求和函数

python - 在 Django/GAE 中渲染包含的文件时没有显示错误

python - 如何滚动我自己的pypi?

python - 将具有不同大小的单个数组的二维 numpy 字符串数组保存到 csv 文件

java 使用 case、while 和 if 语句循环

java - 如何检查数组是否已满,如果未满则添加到它?

python - Pandas 搜索速度/性能/效率