我正在尝试返回该函数,以便它只需要一个单词并将其转换为Cow Latin。我的函数出现连接错误。 (Python 3)
如果单词以辅音开头,那么Cow拉丁语版就是 通过将第一个字母移动到单词的末尾并添加来形成 字符串" oo&#34 ;,例如,turtle - > urtletoo
如果单词以非辅音字符开头,那么牛拉丁语 version只是英文单词后跟" moo&#34 ;,例如,egg - > eggmoo和121word - > 121wordmoo
辅音被定义为" bcdfghjklmnpqrstvwxyz"。
我的功能:
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]
当我运行我的功能时,它给了我这个错误:
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 5.1\src\debug\tserver\_sandbox.py", line 1, in <module>
# Used internally for debug sandbox under external interpreter
File "C:\Program Files (x86)\Wing IDE 101 5.1\src\debug\tserver\_sandbox.py", line 11, in cow_latinify_sentence
File "C:\Program Files (x86)\Wing IDE 101 5.1\src\debug\tserver\_sandbox.py", line 11, in <listcomp>
File "C:\Program Files (x86)\Wing IDE 101 5.1\src\debug\tserver\_sandbox.py", line 5, in cow_latinify_word
builtins.TypeError: can only concatenate list (not "str") to list
答案 0 :(得分:1)
连接是+
运算符。
错误消息准确地解释了问题:您从列表开始,并尝试在此行中添加字符串我假设:
return lista[1:] + [lista[0]] + "oo"
现在你想要的是不添加列表,而是添加字符串。您可以删除list()
周围的word.lower()
并删除lista[0]
周围的括号。
答案 1 :(得分:1)
您正在将单词(字符串)转换为列表:
lista = list(word.lower())
这样做:
my_str = "hello"
weirded_out = list(my_str) # ['h', 'e', 'l', 'l', 'o']
然后,您尝试将“00”添加到列表中,这会导致错误:
return lista[1:] + [lista[0]] + "oo"
在尝试将所有单词全部添加之前,请不要将单词转换为列表(最佳选项)或将“00”转换为列表。
答案 2 :(得分:0)
在您的解决方案中,您将word
从字符串转换为包含单词字符的列表(您正在为alpha
和lista
执行此操作。之后,你得到的错误只是声明你不能用列表连接一个列表。当你删除这样的list()
部分时,你的代码会起作用:
alpha = "bcdfghjklmnpqrstvwxyz"
def cow_latinify_word(word):
if word[0].lower() in alpha:
lista = 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]
为了更好地理解这一点,您可以检查每种情况下打印的内容:
>>> print(list("hello"))
['h', 'e', 'l', 'l', 'o']
>>> print("hello")
hello