为了账号安全,请及时绑定邮箱和手机立即绑定

如何在字符串中添加元素

如何在字符串中添加元素

DIEA 2022-04-23 21:14:26
如何在字符串中添加一些元素?我写了这段代码,但它给了我这个错误:“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 frase2frase = getString("Inserisci frase: ")print(copia(frase))我怎样才能解决这个问题?
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

尝试使用frase2 += frase[i]



查看完整回答
反对 回复 2022-04-23
?
繁花如伊

TA贡献2012条经验 获得超12个赞

这是如何添加字符串的示例。字符串追加

frase2[i]应该是frase2,因为它只是一个字符串而不是数组


查看完整回答
反对 回复 2022-04-23
?
largeQ

TA贡献2039条经验 获得超7个赞

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


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


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)


查看完整回答
反对 回复 2022-04-23
  • 3 回答
  • 0 关注
  • 305 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信