我试图用elif语句写一个if语句,然后在末尾写一个else语句,除了它完全跳过我的elif语句并且无论什么(甚至是if语句)都执行else语句。
word = input('Enter an all lowercase word to be translated: ')
if word[:1] == ('a', 'e', 'i', 'o', 'u'):
print(word + 'way')
elif word[:2] ==('a', 'e', 'i', 'o', 'u') :
print(word[1:] + word[0] + 'ay')
elif word[:3] == ('a', 'e', 'i', 'o', 'u'):
print(word[2:] + word[0:] + 'ay')
else:
print(word)
如果我删除最后一个elif和else语句并将第一个elif语句转换为else语句,它将完全按照我的要求运行,但我需要elif语句。
if word[1] == ('a', 'e', 'i', 'o', 'u'):
print(word + 'way')
else:
word[2] ==('a', 'e', 'i', 'o', 'u')
print(word[1:] + word[0] + 'ay')
答案 0 :(得分:2)
这里有几个问题。
我认为您只想为if语句执行数组查找,而不是==
使用in (...)
编辑:代码示例
word = input('Enter an all lowercase word to be translated: ')
vowels = ('a', 'e', 'i', 'o', 'u')
if word[1] in vowels:
print(word + 'way')
elif word[2] in vowels:
print(word[1:] + word[0] + 'ay')
elif word[3] in vowels:
print(word[2:] + word[0:2] + 'ay')
else:
print(word)
答案 1 :(得分:0)
您要求用户输入单词,但您将切片(带有一个或多个字母的字符串)与元组进行比较。这种情况永远不会成真。如果你想测试你的元组中是否包含一个字母,你可以使用:
if word[:1] in ('a', 'e', 'i', 'o', 'u'):
print(word + 'way')
您的进一步比较也存在问题。您可以使用单词[:2]切换多个字母(例如,单词="测试",然后单词[:2]将是" te")。即使您使用"在"中,也不会在元组中包含多个字母。要切第二个字母,你可以写单词[1:2]。
答案 2 :(得分:0)
你现在拥有它的方式,你的条件的右边是一个元组值,它永远不会等于你的左手边,这是一个字符串。
for i,t in ipairs(people) do
print('Record',i)
print('Name',t.name)
print('Address',t.address)
print('Phone',t.phone)
print()
end
如果你试图将单词翻译成猪拉丁语,那么只有两种情况:"单词"是否以元音结尾。
您可以尝试以下表达式:
>>> vowels = ('a','e','i','o','u')
>>> type(vowels)
<class 'tuple'>
>>> vowels = 'aeiou'
>>> type(vowels)
<class 'string'>
>>> type(word[:1])
<class 'string'>