我的功能有点奇怪。
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
)
所以我猜我的问题是循环。我已经尝试改变返回声明的位置,并得到了有趣的结果。
答案 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]