功能不会继续循环

时间:2015-03-29 00:50:20

标签: loops iteration python-3.3

我的功能有点奇怪。

def cow_latinify_sentence(sento):
''' Converting English to Cow Latin '''
    alpha = list("bcdfghjklmnpqrstvwxyz")
    finale = []
    worda = ""
    for word in sento.split():
        finale.append(word)
    for i in finale:
        if i[0].lower() in alpha:
            lista = list(i.lower())
            worda = worda.join(lista[1:] + [lista[0]]) + "oo"             
        else:
            return word + "moo"        
        return worda

当我用以下句子运行它时:

cow_latinify_sentence("Cook me some eggs")

它返回:ookcoo。这是正确的,但它不会循环句子中的其他单词。

该功能应完全返回:ookcoo emoo omesoo eggsmoo

除此之外,如果我有一句话:

cow_latinify_sentence("aran likes his art")

它只返回正在转换的句子中的最后一个元素(artmoo

所以我猜我的问题是循环。我已经尝试改变返回声明的位置,并得到了有趣的结果。

1 个答案:

答案 0 :(得分:2)

当你return worda时,你返回第一个单词然后该功能停止执行。因此,它不会返回任何其他内容。

在Python中,我建议您使用名为 list comprehension 的东西。有关其工作原理的详细信息,请搜索Google。我将在此向您举例说明如何将其应用于您的案例。

alpha = list("bcdfghjklmnpqrstvwxyz")
def cow_latinify_word(word):
    if word[0].lower() in alpha:
        lista = list(word.lower())
        return lista[1:] + [lista[0]] + "oo"
    else:
        return word + "moo"

def cow_latinify_sentence(sentence):
    words = sentence.split();
    return [ cow_latinify_word(word) for word in words]