使用嵌套循环的反元音在python2中具有索引错误

问题描述 投票:1回答:1

我正在执行anti_元音功能,该功能基本上从输入中取出所有元音,并且那里有一些错误。下面是我的代码]

def anti_vowel(text):
  vowel="aeiouAEIOU"
  for i in range(len(text)-1):
    for h in range(len(vowel)-1):
      if text[i]==vowel[h]:
        text=text.replace(text[i],"")

  return text      



print anti_vowel("HELLO")

如果输入“ HELLO”,将成功打印“ HLL”。但是如果我将输入更改为“ Hey look Words!”,它显示错误IndexError:超出范围的字符串索引。如果有人可以帮助我解决此问题,我非常感谢。

python indexing error-handling
1个回答
0
投票

您遇到的问题是,.replace()替换了文本中出现的所有实例。因此,在调用.replace("o","")时,您要替换句子中的所有“ o”,这会使句子更短。因此发生了IndexError

看看这个:

def anti_vowel(text):
  vowel="aeiouAEIOU"
  for i in range(len(text)-1):
    for h in range(len(vowel)-1):
      print(i,h, text)
      if text[i]==vowel[h]:
        text=text.replace(text[i],"")

  return text      

print(anti_vowel("Hey look Words!"))

输出:

0 0 Hey look Words!
0 1 Hey look Words!
0 2 Hey look Words!
0 3 Hey look Words!
0 4 Hey look Words!
0 5 Hey look Words!
0 6 Hey look Words!
0 7 Hey look Words!
0 8 Hey look Words!
1 0 Hey look Words!
1 1 Hey look Words!
1 2 Hy look Words!
1 3 Hy look Words!
1 4 Hy look Words!
1 5 Hy look Words!
1 6 Hy look Words!
1 7 Hy look Words!
1 8 Hy look Words!
2 0 Hy look Words!
2 1 Hy look Words!
2 2 Hy look Words!
2 3 Hy look Words!
2 4 Hy look Words!
2 5 Hy look Words!
2 6 Hy look Words!
2 7 Hy look Words!
2 8 Hy look Words!
3 0 Hy look Words!
3 1 Hy look Words!
3 2 Hy look Words!
3 3 Hy look Words!
3 4 Hy look Words!
3 5 Hy look Words!
3 6 Hy look Words!
3 7 Hy look Words!
3 8 Hy look Words!
4 0 Hy look Words!
4 1 Hy look Words!
4 2 Hy look Words!
4 3 Hy look Words!
4 4 Hy lk Wrds!
4 5 Hy lk Wrds!
4 6 Hy lk Wrds!
4 7 Hy lk Wrds!
4 8 Hy lk Wrds!
5 0 Hy lk Wrds!
5 1 Hy lk Wrds!
5 2 Hy lk Wrds!
5 3 Hy lk Wrds!
5 4 Hy lk Wrds!
5 5 Hy lk Wrds!
5 6 Hy lk Wrds!
5 7 Hy lk Wrds!
5 8 Hy lk Wrds!
6 0 Hy lk Wrds!
6 1 Hy lk Wrds!
6 2 Hy lk Wrds!
6 3 Hy lk Wrds!
6 4 Hy lk Wrds!
6 5 Hy lk Wrds!
6 6 Hy lk Wrds!
6 7 Hy lk Wrds!
6 8 Hy lk Wrds!
7 0 Hy lk Wrds!
7 1 Hy lk Wrds!
7 2 Hy lk Wrds!
7 3 Hy lk Wrds!
7 4 Hy lk Wrds!
7 5 Hy lk Wrds!
7 6 Hy lk Wrds!
7 7 Hy lk Wrds!
7 8 Hy lk Wrds!
8 0 Hy lk Wrds!
8 1 Hy lk Wrds!
8 2 Hy lk Wrds!
8 3 Hy lk Wrds!
8 4 Hy lk Wrds!
8 5 Hy lk Wrds!
8 6 Hy lk Wrds!
8 7 Hy lk Wrds!
8 8 Hy lk Wrds!
9 0 Hy lk Wrds!
9 1 Hy lk Wrds!
9 2 Hy lk Wrds!
9 3 Hy lk Wrds!
9 4 Hy lk Wrds!
9 5 Hy lk Wrds!
9 6 Hy lk Wrds!
9 7 Hy lk Wrds!
9 8 Hy lk Wrds!
10 0 Hy lk Wrds!
10 1 Hy lk Wrds!
10 2 Hy lk Wrds!
10 3 Hy lk Wrds!
10 4 Hy lk Wrds!
10 5 Hy lk Wrds!
10 6 Hy lk Wrds!
10 7 Hy lk Wrds!
10 8 Hy lk Wrds!
11 0 Hy lk Wrds!

IndexError出现的时间。如您所见,尝试替换第一个'o'时,所有'o'都被替换。

我在另一个SO-post上标记了您的问题,其中显示了如何成功进行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.