You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自动重复输入脚本报list index out of range错误如何解决

问题修复方案

错误根因

你触发list index out of range报错的核心原因是遍历下标和列表长度不匹配,同时存在缩进逻辑错误:

  • 你给length变量赋值的是原输入字符串keys的字符总长度,但你遍历的是按空格分割后的列表keyslist,两者的长度完全不一致:比如输入hello world,原字符串长度是11,分割后的列表长度只有2,当循环变量i超过列表最大下标时就会触发索引越界。
  • 代码里第一个while True是死循环,仅包含退出检测逻辑,后面的自动输入代码永远不会被执行,属于缩进错误。

另外需要先确认你的需求:是要按空格分割输入的按键名依次触发(比如输入a b enter对应按a、按b、按回车),还是要逐字符输入整段普通文本,两种场景的修复逻辑略有不同。


场景1:按空格分割的按键名依次触发

修复步骤

  1. 将length的取值改为分割后的列表长度:length = len(keyslist)
  2. 调整缩进,把自动输入的逻辑放到while True循环内部,保证重复输入的功能正常运行
  3. 补充导入缺失的keyboard、time依赖库,把split(' ')改为无参数的split(),避免连续空格生成空字符串元素导致多余输入
  4. 退出前调用keyboard.unhook_all()释放按键监听,避免卡键

修复后代码

import keyboard
import time

def selection():
    # 此处补充你自己原本的selection函数实现
    pass

keys = input('Enter sentence to repeat type: ')

try:
    keyslist = keys.split()
    length = len(keyslist)
    while True:
        if keyboard.is_pressed('`'):
            keyboard.unhook_all()
            quit()
        
        i = 0
        while i < length:
            keyboard.press(keyslist[i])
            i = i + 1
            time.sleep(0.01)
        time.sleep(0.08)
except Exception as exp:
    print(exp)
    selection()

场景2:逐字符输入整段普通文本

不需要做分割处理,直接遍历原输入字符串即可,修复后代码如下:

import keyboard
import time

def selection():
    pass

keys = input('Enter sentence to repeat type: ')

try:
    length = len(keys)
    while True:
        if keyboard.is_pressed('`'):
            keyboard.unhook_all()
            quit()
        
        i = 0
        while i < length:
            keyboard.press(keys[i])
            i = i + 1
            time.sleep(0.01)
        time.sleep(0.08)
except Exception as exp:
    print(exp)
    selection()

内容的提问来源于stack exchange,提问作者intermediate coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:45:04