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

Python数独游戏Pygame代码列表重复添加元素问题咨询

问题根因分析
  • 遍历范围错误:你当前的循环写的是for j in range(len(text_cor) - 1):,由于range是左闭右开区间,这个逻辑会永远跳过列表最后一个元素的校验,当坐标刚好匹配最后一个元素的坐标时,校验逻辑不会命中,就会重复插入新元素。
  • 全局变量初始状态异常:你使用了全局变量equal做标记,但每次进入函数时没有重置该变量的初始值,上一次函数调用结束后equal的残留状态会直接干扰本次的判断逻辑,导致新增逻辑错误触发。
  • 按键检测逻辑易重复触发:pygame.key.get_pressed()是逐帧检测按键状态,只要你按住按键的时间超过1帧的渲染间隔,就会连续多次触发插入逻辑,也会导致重复添加。
修复方案

你可以按照以下步骤修改代码:

  1. 进入函数后第一时间重置equal的初始状态为False
  2. 修正遍历范围,覆盖列表所有元素
  3. 合并重复的坐标判断逻辑,简化代码
  4. 建议替换为KEYDOWN事件检测,避免长按重复触发

修复后的参考代码如下:

def typing(text_cor, pos):
    global numbers, equal
    # 每次进入函数先重置标记位,避免上次调用的残留值干扰
    equal = False
    # 建议替换为KEYDOWN事件检测,替换原有get_pressed逻辑即可避免长按重复触发
    keys = pygame.key.get_pressed()
    if keys[pygame.K_1]:
        numbers = 1
    if keys[pygame.K_2]:
        numbers = 2
    if keys[pygame.K_3]:
        numbers = 3
    if keys[pygame.K_4]:
        numbers = 4
    if keys[pygame.K_5]:
        numbers = 5
    if keys[pygame.K_6]:
        numbers = 6
    if keys[pygame.K_7]:
        numbers = 7
    if keys[pygame.K_8]:
        numbers = 8
    if keys[pygame.K_9]:
        numbers = 9
    if numbers in range(1,10):
        target_x = pos[0] + 15
        target_y = pos[1] + 10
        if len(text_cor) > 0:
            # 修正遍历范围,覆盖所有元素
            for j in range(len(text_cor)):
                if text_cor[j][1] == target_x and text_cor[j][2] == target_y:
                    equal = True
                    if text_cor[j][0] == 0:
                        text_cor[j][0] = numbers
                    numbers = 0
                    break
            if not equal and numbers != 0:
                text_cor.append([numbers, target_x, target_y])
                numbers = 0
                equal = True
            else:
                equal = False
                numbers = 0
        else:
            text_cor.append([numbers, target_x, target_y])
            numbers = 0

如果希望进一步优化性能,还可以把text_cor改成字典结构,以(x,y)坐标为key,值为对应数字,不需要遍历就能直接判断坐标是否存在,性能会比列表遍历高很多。

内容的提问来源于stack exchange,提问作者TAKSHEEL GUPTA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:51:01