如何在字符串中添加元素

如何在字符串中添加一些元素?我写了这段代码,但它给了我这个错误:


“frase2[i] += frase[i]


IndexError:字符串索引超出范围“


我的代码是:


def copia(frase):

    i = 0

    while i < len(frase):

        frase2 = ""

        if (frase[i] >= 'a' and frase[i] <='z') or (frase[i] >= 'A' and frase[i] <= 'Z'):

            frase2[i] += frase[i]

        else:

            frase2[i] += " "

        i += 1

    return frase2



frase = getString("Inserisci frase: ")



print(copia(frase))

我怎样才能解决这个问题?


DIEA
浏览 306回答 3
3回答

翻翻过去那场雪

尝试使用frase2 += frase[i];

繁花如伊

这是如何添加字符串的示例。字符串追加也frase2[i]应该是frase2,因为它只是一个字符串而不是数组

largeQ

您的代码有两个问题。首先,正如已经指出的那样,frase2[i] +=必须是frase2 += ...,因为frase2[i]尚不存在。您希望附加到整个字符串,而不是附加到那个特定的字符。其次,您frase2 = ""在循环的每次迭代中设置。在循环开始之前移动那条线!接下来,您可以通过直接迭代字符,使用for循环而不是while,并使用比较链接而不是那些复杂的and和or语句来改进代码:def copia(frase):&nbsp; &nbsp; frase2 = ""&nbsp; &nbsp; for c in frase:&nbsp; &nbsp; &nbsp; &nbsp; if 'a' <= c <= 'z' or 'A' <= c <= 'Z':&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; frase2 += c&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; frase2 += " "&nbsp; &nbsp; return frase2或者你甚至可以使用str.isalpha(不完全一样,但可能更像你真正想要的,例如还允许重音字符),使用三元a if c else b并将循环移动到 a 内的生成器表达式中str.join:def copia(frase):&nbsp; &nbsp; return ''.join(c if c.isalpha() else " " for c in frase)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python