错误:无法连接

时间:2015-04-15 03:20:15

标签: python python-3.x

我正在尝试返回该函数,以便它只需要一个单词并将其转换为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

3 个答案:

答案 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从字符串转换为包含单词字符的列表(您正在为alphalista执行此操作。之后,你得到的错误只是声明你不能用列表连接一个列表。当你删除这样的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