Python循环检测红色时计数器streak未正常递增问题求解
问题根因
- 未声明全局变量:
color()函数内需要修改全局变量streak,但未使用global关键字声明,Python默认会将函数内的streak识别为局部变量,无法正确读取、修改全局作用域的streak值。 - 未更新计数器变量:满足红色判定条件时仅计算了临时变量
x,没有将计算结果赋值回streak,计数器自然不会发生变化。
修复后可运行代码
from time import sleep import pyautogui streak = 0 r = 1 def color(): # 声明要修改的是全局变量streak global streak pix = pyautogui.pixel(500, 285) red = pix[0] print(red) if red == 222: # 直接更新streak的值 streak += r print(f"当前streak值:{streak}") while True: color() sleep(5)
补充说明
- 如果判定的红色R值不是固定222,建议增加判定区间,比如
if 220 <= red <= 225,避免屏幕色彩细微偏移导致判定失效。 - 如果不需要单独定义步进变量
r,可以直接写streak += 1简化代码。
内容的提问来源于stack exchange,提问作者testing
相关产品推荐
相关产品推荐

