【发布时间】:2021-04-17 20:05:44
【问题描述】:
我有下面的代码来删除任何输入字符串的元音:
def disemvowel(string_):
vowels = ['a', 'e', 'i','o','u']
for i in range(len(string_)):
if string_[i] in vowels:
string_ = string_.replace(string_[i],"")
return string_
我似乎无法弄清楚为什么我在“if string_[i] in vowels:”行中收到“索引超出范围”错误;是不是因为 string_ 的长度和元音列表可能不匹配?
我对上面代码的理解是,我们将输入string_中的每个字符,并检查它是否与列表元音中的任何项目匹配,如果匹配则执行......还是我误解了使用“在”?
【问题讨论】:
-
另外一个注释,
string_.replace将替换所有string_[i] with ''实例,所以当你这样做时,你实际上是在缩短你的字符串。但是您仍在迭代字符串的原始长度。最终,您最终检查了索引 10,但是您将字符串缩短到比这更短,并且您得到一个索引超出范围错误。这可能是index out of range错误的来源。问题的解决方案已在下面添加。
标签: python if-statement