python - 为什么我的程序会响应“列表索引超出范围”?
问题描述
我写了这段代码:
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
有人可以告诉我有什么问题吗?
解决方案
两个建议。
不要在迭代列表时对其进行变异,而是跟踪要删除的元素并在迭代后将其删除。
您可以将该行简化为
if (asciis[i] in range(32)):
推荐阅读
- javascript - 如何从 API 响应中渲染 500 多种产品以做出本机反应
- python - 如何在for循环中组合嵌套字典
- php - 如何为一个客户端一次插入多个日期条目(日期数组数据)
- php - 如何在laravel中获取不同veriables的json数据?
- go - 请求中缺少查询参数
- java - Tomcat 7 使用新 URL 和“类路径”字符串获取资源,ClassLoader.getSystemClassLoader().getResource 返回 null
- android - 网络绑定资源助手,不保存到数据库
- ubuntu - 在 Ubuntu 上下载 Parisienne 字体
- typescript - 更新 Vue 包 i18next 后在节点模块中构建错误
- python - 如果没有更改,不要在上下文中返回表单?