For循环似乎没有迭代每个列表索引(嵌套if语句)

时间:2017-02-17 05:44:17

标签: python loops if-statement for-loop

我正在尝试编写一个代码,将一个单词变为猪拉丁/拉丁语。例如,将成为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)

3 个答案:

答案 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