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

pyautogui鼠标脚本调用random.randint报空范围ValueError错误

问题原因

random.randint(a, b) 要求传入的下限参数a必须小于等于上限参数b,如果a > b就会抛出ValueError: empty range for randrange()报错,也就是你遇到的错误。
你的坐标参数顺序完全写反了:

  • 定义的X轴区间HP_X = [554, 110],第一个值554远大于第二个值110
  • 定义的Y轴区间HP_Y = [567, 123],第一个值567远大于第二个值123
    这就导致调用随机数函数时没有合法的取值范围,直接触发报错。

另外你对屏幕坐标规则的理解有偏差:屏幕坐标系原点(0,0)在显示器左上角,水平向右X值递增,垂直向下Y值递增。用左上角、右下角划定矩形区域时,左上角的X、Y值一定小于右下角的X、Y值,你当前传入的两组坐标都是大值在前、小值在后,不符合坐标规则。

修复方法

方案1:直接修正参数顺序

把每组坐标的小值放在前(对应左、上边界),大值放在后(对应右、下边界)即可:

import pyautogui as auto
import random

# 修正后的坐标区间,左边界X=110、右边界X=554,上边界Y=123、下边界Y=567
HP_X = [110, 554]
HP_Y = [123, 567]
auto.moveTo(random.randint(HP_X[0], HP_X[1]), random.randint(HP_Y[0], HP_Y[1]), 0.5)

方案2:兼容乱序传参的稳妥写法

如果怕后续调整坐标时再写反顺序,可以在代码里自动取区间的最小、最大值做边界,不需要手动调整顺序:

import pyautogui as auto
import random

HP_X = [554, 110]
HP_Y = [567, 123]
# 自动识别合法区间边界,不受参数传入顺序影响
target_x = random.randint(min(HP_X), max(HP_X))
target_y = random.randint(min(HP_Y), max(HP_Y))
auto.moveTo(target_x, target_y, 0.5)

提示:取点时可以打开系统截图工具,鼠标悬停在目标位置就能看到实时坐标数值,确认边界值大小后再填入参数,能减少这类低级错误。

内容的提问来源于stack exchange,提问作者4lek5

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:51:17