我无法在Python中解决this problem。
我写了这段代码:
pyg = 'ay'
original = raw_input('Enter a word:')
word = original.lower();
first = word[0];
if len(original) > 0 and original.isalpha():
if first == 'a' or 'e' or 'i' or 'o' or 'u':
new_word = word + pyg;
else:
new_word = word[1:] + first_2 + pyg;
print new_word;
else:
print "Null";
但是在输入 Basic 字后出现以下错误:
哎呀,再试一次!你的单词以辅音开头,但是打印出“basicay”而不是“asicbay”。
答案 0 :(得分:4)
您的错误就在这一行:
if first == 'a' or 'e' or 'i' or 'o' or 'u':
这基本上转化为:
if (first == 'a') or 'e' or 'i' or 'o' or 'u':
和'e','i','o'和'u'在Python中翻译为“True”,因此该语句始终为真。
您实际上需要对每个字母进行相等检查:
if first == 'a' or first == 'e' or first == 'i' or first == 'o' or first == 'u':
但幸运的是,在Python中有一种更简单的方法:
if first in "aeiou":
答案 1 :(得分:3)
if first == 'a' or 'e' or 'i' or 'o' or 'u':
评估为
if (first == 'a') or 'e' or 'i' or 'o' or 'u':
始终为真,因为即使first != 'a'
,以下部分'e'
也是如此。
将其替换为
if first in ('a', 'e', 'i', 'o', 'u'):
或者,如果first
始终是单个字符:
if first in 'aeiou':
此外,Python在行尾不需要;
。
答案 2 :(得分:1)
if first == 'a' or 'e' or 'i' or 'o' or 'u'
突出了我。
原因是:Python将从左到右评估其布尔语句,并将您的语句解释为if (first == 'a') or ('e') or ('i') or ('o') or ('u')
。任何非空字符串都是一个“真实”的值,基本上会让你回到'e'。
这不是你想要的行为。您应该将其更改为使用if first in ('a', 'e', 'i', 'o', 'u')
。