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

Python类方法应用:滑动谜题类生成二维数字列表需求问询

实现SlidingPuzzle类生成指定二维数字列表

嘿,这事儿不难,我帮你写好了符合要求的代码,直接就能用:

class SlidingPuzzle:
    def __init__(self, rows, cols):
        # 用私有实例变量存储二维列表
        self.__board = []
        for row in range(rows):
            # 计算当前行的起始数字
            start_num = row * cols
            # 生成当前行的连续数字列表
            current_row = list(range(start_num, start_num + cols))
            self.__board.append(current_row)
    
    def get_board(self):
        # 返回私有列表的副本,避免外部直接修改内部数据
        return [row.copy() for row in self.__board]

# 测试示例
board = SlidingPuzzle(3, 4)
print(board.get_board())  # 输出: [[0,1,2,3],[4,5,6,7],[8,9,10,11]]

关键点说明:

  • 私有实例变量:用self.__board存储二维列表,双下划线开头是Python的私有变量命名规范,能有效防止外部代码直接修改内部数据,保证类的封装性。
  • 二维列表生成逻辑:每一行的起始数字是行号 × 列数,比如第0行(第一行)起始为0×4=0,第1行起始为1×4=4,以此类推。再通过range()快速生成该行的连续数字,转成列表后添加到私有变量中。
  • 安全获取数据:我特意加了get_board()方法,返回的是原列表的深副本(每行单独复制),这样外部拿到的列表不会影响类内部的私有变量,避免意外修改破坏数据结构。

如果你非要直接访问内部私有变量(不推荐这么做,会破坏封装),Python也提供了变通方式:board._SlidingPuzzle__board,但还是建议用get_board()方法来获取数据更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:32:31