python - IndexError:while 循环中的列表超出范围
问题描述
因此,当我需要更改以下代码的代码位置时,我正在编辑我的大型自动化脚本。将代码放在脚本的上方位置后,我突然开始收到以下错误:
File "C:\Users\User\Desktop\clicker.py", line 198, in <module>
while a[i] != None:
IndexError: list index out of range
我尝试检查索引,但它们似乎很好。我不知道如何进一步调试它。奇怪的是错误显示在while循环的末尾(如果它只在开始时显示,我知道如何修复它)。这意味着列表中的每个检测到的坐标都会被执行,并且当不再存在坐标时它会在最后失败。我的代码是:
# convert broken xls to working xlsx
pyautogui.click(x=75, y=746)
sleep(1)
pyautogui.click(pyautogui.locateCenterOnScreen('C:/Users/User/Documents/Clicker/downloads.png'))
sleep(3)
a = list(pyautogui.locateAllOnScreen('C:/Users/User/Documents/Clicker/excel.png'))
i=0
while a[i] != None:
x, y = pyautogui.center(a[i])
pyautogui.click(x, y, clicks=2)
sleep(4)
pyautogui.click(pyautogui.locateCenterOnScreen('C:/Users/User/Documents/Clicker/yes.png'))
sleep(2.5)
try:
pyautogui.click(pyautogui.locateCenterOnScreen('C:/Users/User/Documents/Clicker/editing.png'))
except TypeError:
print("No need to press editing mode")
# click file
pyautogui.click(x=29, y=50)
sleep(1)
# click save as
pyautogui.click(x=50, y=312)
sleep(1)
# click on drop down menu
pyautogui.click(x=814, y=177)
sleep(2)
# select .xlsx
pyautogui.click(x=814, y=200)
sleep(1)
# click save
pyautogui.click(x=920, y=170)
sleep(2)
# close excel
pyautogui.click(x=997, y=14)
sleep(2)
i+=1
#-----EXCEL------------
解决方案
while a[i] != None:
x, y = pyautogui.center(a[i])
相反,使用
for i in range(len(a)):
x, y = pyautogui.center(a[i])
或者,因为你不i
用于其他任何事情,
for item in a:
x, y = pyautogui.center(item)
请查看有关循环的材料。你应该从那里学到这些技术。
推荐阅读
- android - 如何恢复检查到达列表底部以检查到达顶部(recyclerView)的方法?
- python - 涉及多个特征时如何处理文本分类问题
- php - 我应该在当前文件中添加文件上传大小而不在服务器上添加 php.ini 和 htaccess
- apache-kafka - Kafka Streams 的时间窗口如何或何时过期?
- search - pycharm jetbrains 搜索不在 test*.py 文件名模式中的文本
- oracle - 对象不再存在
- typescript - 以数组形式访问静态只读属性
- python - 无法弄清楚如何使用 Spyne 将 Python dict/Json 作为 xml 返回
- scala - 如何使用 Datastax 连接器从 Spark Dataframe 更新特定的 Cassandra 列集
- javascript - 三.js 示例