如何在字符串中添加一些元素?我写了这段代码,但它给了我这个错误:“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 回答
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)
添加回答
举报
0/150
提交
取消