在python中将字符附加到字符串

时间:2018-09-09 00:16:10

标签: python string list concatenation

我正在尝试解决以下问题:

将字符串“ PAYPALISHIRING”以Z字形写在给定的行数上,如下所示:(您可能希望以固定的字体显示此图案以提高可读性)

P   A   H   N
A P L S I I G
Y   I   R

然后逐行读取:“ PAHNAPLSIIGYIR”

编写代码,该代码将接收字符串并在给定行数的情况下进行此转换:

string convert(string s,int numRows);

我编写了以下代码,但是粗体字出现错误 “ TypeError:+不支持的操作数类型:“ NoneType”和“ unicode””

class Solution(object):
    def convert(self, s, numRows):
        """
        :type s: str
        :type numRows: int
        :rtype: str
        """
        if numRows==1:
            return s

        templist=[None]*numRows
        ret=" "

        curRow=0
        goingDown=0
        for each_char in s:
            if templist[curRow]:
                templist[curRow]=each_char
            else:
                **templist[curRow]=templist[curRow] + each_char**
            if (curRow==numRow-1 or curRow == 0):
                goingDown = not goingDown
            if goingDown:
                curRow=curRow+1
            else:
                curRow=curRow-1

        for each_str in templist:
            ret=ret+each_str
        print ret

我在这方面做错了吗?如果有人可以在这里指出问题,那就太好了。 预先感谢

2 个答案:

答案 0 :(得分:1)

您的情况似乎在以下几行中得到了逆转:

        if templist[curRow]:
            templist[curRow]=each_char
        else:
            **templist[curRow]=templist[curRow] + each_char**

它应该显示为:

        if templist[curRow]:
            templist[curRow]=templist[curRow] + each_char
        else:
            templist[curRow]=each_char

这可确保仅在该字符串已经存在(不存在templist[curRow])时才追加到None中的字符串,从而避免将字符串添加到None的错误。 / p>

一个更好的方法可能是设置templist = [""] * numRows,即一个空字符串列表,然后仅使用templist[curRow] += each_char对其进行添加,因为您可以在一个空字符串中添加一个字符,所以它将一直有效。

答案 1 :(得分:0)

是的,您做错了事。

templist=[None]*numRows行使您的templist变量包含一堆None。然后,您继续使用其中的None个,并尝试使用粗体的语句将其中一个“添加”到字符串中:templist[curRow]=templist[curRow] + each_char(即,该赋值的右侧为到None + each_char)。

您无法在Python中添加字符串和None,因此会出现错误。