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

使用reversed(range)返回range_iterator对象,如何反向枚举游戏板行号?

解决Connect "M"游戏行号反向枚举问题

问题原因

  1. 直接打印迭代器对象:reversed()返回的是迭代器实例,直接print(backwards)会输出迭代器的内存地址,而非实际行号。
  2. 循环逻辑错误:reversed(range(r))仅对0到r-1的小范围反转,无法生成从最大行号到0的完整序列。

修改后的代码

假设你需要1-based行号(7到1,对应BOARD_ROWS=7),修改后的代码如下:

def print_board(self):
    # 打印列号
    print(end='  ')
    for c in range(BOARD_COLS):
        print(f"{c} ", end="")
    print("")

    # 从最后一行(最大索引)开始遍历行
    for r in reversed(range(BOARD_ROWS)):
        # 打印1-based反向行号(7→1)
        print(f"{r+1} ", end="")
        # 打印该行的所有格子
        for c in range(BOARD_COLS):
            print(f" {self.board[r][c]}", end="")
        print("")

如果需要0-based行号(6→0,对应BOARD_ROWS=7的索引范围),只需把打印行号的代码替换为:

print(f"{r} ", end="")

关键说明

  • reversed(range(BOARD_ROWS))会生成从BOARD_ROWS-1到0的迭代器,完美实现从最后一行到第一行的遍历。
  • 通过r+1直接转换为1-based行号,避免多余的迭代器操作,代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:25:45