def onlyLetters(seq):
seq = seq.lower()
letter = ('a', 'b', 'c', 'z')
for i in range(len(seq)):
if seq[i] != letter:
seq = seq[:i] + seq[i+1:]
return seq
我试着做一个for循环,遍历字符串seq的所有元素,检查它是否匹配元组字母(稍后我将用字母表中的所有字母填充它),如果不匹配,我将通过切掉与元组不匹配的第I个元素来重新定义字符串seq。我想用“你好吗?”返回时不带空格和标点符号,小写为“hellohowareyou”。但是,当我运行代码时,我在第5行得到一个错误“字符串索引超出范围”。请帮忙。你知道吗
onlyLetters(' K KKdf afd')
---------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-368-70e5521e7134> in <module>()
----> 1 onlyLetters(' K KKdf afd')
<ipython-input-367-fb538af71ff5> in onlyLetters(seq)
3 letter = ('a', 'b', 'c', 'z')
4 for i in range(len(seq)):
----> 5 if seq[i] != letter:
6 seq = seq[:i] + seq[i+1:]
7 return seq
IndexError: string index out of range
这是因为在循环数组时修改了数组。这通常是个坏主意。我建议您在看到所需的字母时将值复制到新数组中,而不是删除不需要的字母然后返回新数组。你知道吗
你不应该做
if seq[i] !=letter
,而应该做if seq not in letter
,你会得到纠正。你知道吗代码如下所示:
相关问题 更多 >
编程相关推荐