我在空闲时间一直在学习哈佛的 CS50 Python 课程,并且正在研究问题集 2。该问题要求您编写一个程序,该程序接收用户输入,然后输出输入但不包含任何值。我在 for 循环中遇到了“IndexError:列表索引超出范围”错误,该错误用于删除已识别的元音。
最初,我没有考虑到删除一个字符后,整个字符串的长度也会减少 1,但我通过让索引“i”从元音内的值减去自身来解释这一点大批。在我收到错误之前,该程序似乎可以处理大约 5 个元音,但是在纸上写出我的逻辑后,我只是看不出哪里出了问题。
另外,请随意对我的代码发表评论,总的来说,我是一个完全的初学者,在 MATLAB 方面只有少量经验。
如有任何建议,我们将不胜感激,谢谢!
代码:
text = str(input("Input: ")).strip()
# find positions of vowels
vow_pos = []
vowels = ["A","a","E","e","I","i","O","o","U","u"]
k = 0
for i in range(len(text)):
for k in range(len(vowels)):
if text[i].find(vowels[k]) != -1:
vow_pos.append(i)
k = k + 1
# delete vowels based on position
for j in range(len(vow_pos)):
if j > 0:
vow_pos[j] = vow_pos[j] - j
text = text.replace(text[vow_pos[j]],"")
else:
text = text.replace(text[vow_pos[j]],"")
print("Output: " + str(text))
for k in range(len(vowels)):
:
k = k + 1
for
循环本身正确地迭代k
,您不应该在循环体内手动调整它。