如何在字符串中添加一些元素?我写了这段代码,但它给了我这个错误:
“ 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))
我该如何解决?
答案 0 :(得分:1)
您的代码存在两个 问题。首先,正如已经指出的那样,frase2[i] +=
必须为frase2 += ...
,因为frase2[i]
还不存在。您要整体附加到字符串,而不是附加到特定字符。其次,在循环的每次迭代中设置frase2 = ""
。在循环开始之前将那条线移动!
接下来,您可以通过直接迭代字符,使用for
循环而不是while
并使用比较链接代替那些复杂的and
和{{1} }语句:
or
或者您甚至可以使用str.isalpha
(不完全相同,但可能更像您真正想要的,例如还允许带有重音符号的字符),使用三元def copia(frase):
frase2 = ""
for c in frase:
if 'a' <= c <= 'z' or 'A' <= c <= 'Z':
frase2 += c
else:
frase2 += " "
return frase2
并将循环移动到str.join
中的生成器表达式:
a if c else b
答案 1 :(得分:0)
尝试使用frase2 += frase[i]
;
答案 2 :(得分:0)
这是示例如何添加字符串。 string append
frase2[i]
也应该是frase2
,因为它只是一个字符串而不是数组