首页 > 解决方案 > 如何在字符串中添加元素

问题描述

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

“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))

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

标签: pythonstring

解决方案


您的代码有两个问题。首先,正如已经指出的那样,frase2[i] +=必须是frase2 += ...,因为frase2[i]尚不存在。您希望附加到整个字符串,而不是附加到那个特定的字符。其次,您frase2 = ""在循环的每次迭代中设置。在循环开始之前移动那条线!

接下来,您可以通过直接迭代字符,使用for循环而不是while,并使用比较链接而不是那些复杂的andor语句来改进代码:

def copia(frase):
    frase2 = ""
    for c in frase:
        if 'a' <= c <= 'z' or 'A' <= c <= 'Z':
            frase2 += c
        else:
            frase2 += " "
    return frase2

或者你甚至可以使用str.isalpha(不完全一样,但可能更像你真正想要的,例如还允许重音字符),使用三元a if c else b并将循环移动到 a 内的生成器表达式中str.join

def copia(frase):
    return ''.join(c if c.isalpha() else " " for c in frase)

推荐阅读