我正在练习打圈。遇到一个字符串索引

2024-09-29 22:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

    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

Tags: 字符串in元素forlenreturnif字母
2条回答

这是因为在循环数组时修改了数组。这通常是个坏主意。我建议您在看到所需的字母时将值复制到新数组中,而不是删除不需要的字母然后返回新数组。你知道吗

你不应该做if seq[i] !=letter,而应该做if seq not in letter,你会得到纠正。你知道吗

代码如下所示:

 def onlyLetters(seq):
        seq = seq.lower()
        letter = ('a', 'b', 'c', 'z')
        for i in range (len(seq)): 
            if seq not in letter:
                seq = seq[:i] + seq[i+1:]
        return seq

相关问题 更多 >

    热门问题