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

MicroPython中保存高分出现TypeError: unsupported types for __ge__: 'int', 'list'的原因

树莓派Pico俄罗斯方块高分保存功能报错排查

我在Raspberry Pi Pico上开发俄罗斯方块游戏时,尝试实现高分保存功能,但持续报错,无法定位代码问题,查阅相关方案也未解决。

报错代码片段

def game_over_screen():
    pgb.fill_rect(240-240,240-240,240,240,PicoGameBoy.color(0,0,0))
    pgb.fill_rect((GRID_OFFSET+GRID_COLS+1)*BLOCK_SIZE+1,16*BLOCK_SIZE,
                  BLOCK_SIZE*7,BLOCK_SIZE*2,
                  TEXT_BACKGROUND_COLOR)
    pgb.text("LINES",(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,16*BLOCK_SIZE+1,TEXT_COLOR)
    pgb.text("%8s" % lines,(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,17*BLOCK_SIZE+1,TEXT_COLOR)
    if score >= highscore:
        highscore.pop(0)
        highscore.append(score)
    pgb.fill_rect((GRID_OFFSET+GRID_COLS+1)*BLOCK_SIZE+1,16*BLOCK_SIZE,
                  BLOCK_SIZE*7,BLOCK_SIZE*2,
                  TEXT_BACKGROUND_COLOR)
    pgb.text("HIGHSCORE",(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,16*BLOCK_SIZE+1,TEXT_COLOR)
    pgb.text("%8s" % highscore,(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,17*BLOCK_SIZE+1,TEXT_COLOR)
    # draw text (LEVEL)
    pgb.fill_rect((GRID_OFFSET+GRID_COLS+1)*BLOCK_SIZE+1,13*BLOCK_SIZE,
                  BLOCK_SIZE*7,BLOCK_SIZE*2,
                  TEXT_BACKGROUND_COLOR)
    pgb.text("LEVEL",(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,13*BLOCK_SIZE+1,TEXT_COLOR)
    pgb.text("%8s" % level,(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,14*BLOCK_SIZE+1,TEXT_COLOR)
    
    # draw text (SCORE)
    pgb.fill_rect((GRID_OFFSET+GRID_COLS+1)*BLOCK_SIZE+1,10*BLOCK_SIZE,
                  BLOCK_SIZE*7,BLOCK_SIZE*2,
                  TEXT_BACKGROUND_COLOR)
    pgb.text("SCORE",(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,10*BLOCK_SIZE+1,TEXT_COLOR)
    pgb.text("%8s" % score,(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,11*BLOCK_SIZE+1,TEXT_COLOR)
    #pgb.fill_rect(60,90,120,240,BLACK)
    pgb.center_text("GAME OVER",WHITE)
    pgb.show()
    while True:
        time.sleep(0.500)

错误输出信息

Traceback (most recent call last):
  File "<stdin>", line 608, in <module>
  File "<stdin>", line 409, in game_over_screen
TypeError: unsupported types for __ge__: 'int', 'list'

问题原因与修复方案

  • 错误根源:代码中if score >= highscore:这一行,score是整数类型,而highscore是列表类型,Python不允许直接用>=运算符比较整数和列表,因此触发类型错误。
  • 修复步骤:
    1. 修正比较逻辑:如果highscore是存储高分的列表(比如按从低到高排序),需要和列表中的具体分数比较,比如和列表里的最低分(第一个元素)对比,将代码改为:
      if score >= highscore[0]:
          highscore.pop(0)
          highscore.append(score)
          # 可选:对列表重新排序,保持从低到高顺序
          highscore.sort()
      
    2. 修正高分显示:当前代码pgb.text("%8s" % highscore,...)会把整个列表打印出来,不符合显示需求,应该显示列表中的最高分,改为:
      pgb.text("%8s" % max(highscore),(GRID_OFFSET+GRID_COLS+2)*BLOCK_SIZE+1,17*BLOCK_SIZE+1,TEXT_COLOR)
      
      或者如果列表是按从低到高排序,也可以用highscore[-1]取最后一个元素(最高分)。
    3. 初始化检查:确保highscore初始化时是包含整数的列表,比如highscore = [0]或highscore = [1000, 800, 500]这样的初始高分值。

内容的提问来源于stack exchange,提问作者SCP-999

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 08:03:32