我正在尝试编写一个代码,将一个单词变为猪拉丁/拉丁语。例如,将成为isyay,scram将成为amscray。第一种情况是有效的,然而,第二种情况打印出了cramsay。为什么它似乎没有正确循环?
def doggify(word):
wordlist=list(word)
start=word[0]
if start=='a' or start=='e' or start=='i' or start=='o' or start=='u':
dogword=word+'yay'
return print(dogword)
else:
empty=[]
for letter in wordlist:
if letter!='a' or letter!='e' or letter!='i' or letter!='o' or letter!='u':
empty.append(letter)
wordlist.remove(letter)
dogword=''.join(wordlist)+''.join(empty)+'ay'
return print(dogword)
答案 0 :(得分:1)
你应该做的是在else语句中添加最后两行,并为剩余的原始字母使用另一个列表。由于您要从列表中删除您正在迭代的内容,因此会跳过字母。这段代码实际上是这样做的:
def doggify(word):
wordlist = list(word)
start = word[0]
if start in 'aeiou':
dogword = word + 'yay'
return dogword
else:
empty = []
new = list(wordlist)
for letter in wordlist:
if letter not in 'aeiou':
empty.append(letter)
new.remove(letter)
else:
dogword = ''.join(new) + ''.join(empty) + 'ay'
return dogword
答案 1 :(得分:0)
请尝试以下代码: -
def doggify(word):
wordlist=list(word)
start=word[0]
if start=='a' or start=='e' or start=='i' or start=='o' or start=='u':
dogword=word+'yay'
return dogword
else:
empty=[]
for letter in wordlist:
if letter!='a' or letter!='e' or letter!='i' or letter!='o' or letter!='u':
empty.append(letter)
wordlist.remove(letter)
dogword=''.join(wordlist)+''.join(empty)+'ay'
return dogword
input:- print doggify('test')
output:- esttay
答案 2 :(得分:0)
def doggify(word):
if word[0] in 'aeiou':
return word+'yay'
else:
consonants = []
tail = []
out = consonants
for letter in word:
if letter in 'aeiou' and out is not tail:
out = tail
out.append(letter)
return ''.join(tail)+''.join(consonants)+'ay'
print(doggify('scram'))
打印amscray