【问题标题】:Error:Could not concatenate错误:无法连接
【发布时间】:2015-04-15 11:55:05
【问题描述】:

我正在尝试返回该函数,以便它将一个单词转换为 Cow Latin。我的函数出现连接错误。 (Python 3)

如果单词以辅音开头,那么 Cow Latin 版本是 通过将第一个字母移动到单词的末尾并添加 字符串“oo”,例如,turtle -> urtletoo

如果单词以非辅音字符开头,则 Cow Latin version 是简单的英文单词,后跟“moo”,例如,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

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    连接是+ 运算符。

    错误消息准确地解释了问题:您从一个列表开始,并尝试在我假设的这一行中添加一个字符串:

    return lista[1:] + [lista[0]] + "oo"
    

    现在您想要的不是添加列表,而是添加字符串。您可以通过删除 word.lower() 周围的 list() 并删除 lista[0] 周围的括号来做到这一点。

    【讨论】:

      【解决方案2】:

      你正在把你的单词(字符串)变成列表:

      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”转换为列表。

      【讨论】:

        【解决方案3】:

        在您的解决方案中,您将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
        

        【讨论】:

          猜你喜欢
          • 2016-12-28
          • 1970-01-01
          • 1970-01-01
          • 2013-07-11
          • 2014-07-04
          • 2017-06-08
          • 2016-09-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多