首页 > 解决方案 > 为什么我的程序会响应“列表索引超出范围”?

问题描述

我写了这段代码:

asci = input('ASCII: ')
asciis = asci.split()
for i in range(len(asciis)):
    asciis[i] = int(asciis[i], 16)
    asciis[i] = str(asciis[i])
    asciis[i].lstrip('0x')
    asciis[i] = int(asciis[i])
    if asciis[i] == 0 or asciis[i] == 1 or asciis[i] == 2 or asciis[i] == 3 or asciis[i] == 4 or asciis[i] == 5 or asciis[i] == 6 or asciis[i] == 7 or asciis[i] == 8 or asciis[i] == 9 or asciis[i] == 10 or asciis[i] == 11 or asciis[i] == 12 or asciis[i] == 13 or asciis[i] == 14 or asciis[i] == 15 or asciis[i] == 16 or asciis[i] == 17 or asciis[i] == 18 or asciis[i] == 19 or asciis[i] == 20 or asciis[i] == 21 or asciis[i] == 22 or asciis[i] == 23 or asciis[i] == 24 or asciis[i] == 25 or asciis[i] == 26 or asciis[i] == 27 or asciis[i] == 28 or asciis[i] == 29 or asciis[i] == 30 or asciis[i] == 31:
        del asciis[i]

然后出现了:

    Traceback (most recent call last):
  File "C:\Users\White & Nerdy\AppData\Local\Programs\Python\Python38-32\ascii.py", line 5, in <module>
    asciis[i] = int(asciis[i], 16)
IndexError: list index out of range

有人可以告诉我有什么问题吗?

标签: python

解决方案


两个建议。

  1. 不要在迭代列表时对其进行变异,而是跟踪要删除的元素并在迭代后将其删除。

  2. 您可以将该行简化为if (asciis[i] in range(32)):


推荐阅读