首页 > 解决方案 > 用户索引类似于矩阵的东西

问题描述

首先需要说这本质上是一个家庭作业问题,对我来说真的是一个很难的问题。

从动态矩阵的打印输出(或任何可以格式化和打印为视觉相似的东西),我需要使用来自用户输入的索引来更改该“矩阵”中的值。它不一定是矩阵,可以格式化为相似的东西也可以。

让这个问题对我来说很困难的是只能使用未嵌套的列表、字符串或字典,并且不允许导入包。所以,列表理解是不可能的。

到目前为止,我尝试过的一件事是根据单独的列表打印单独的列表和索引,但我被卡住了。

标签: pythonmatrix

解决方案


您可以使用一维列表,在用户输入中获取 x、y 坐标,并根据 x 偏移量转换 y 坐标。

例如,假设您想要表示一个 5x3 数组,而用户想要第二列 (x=2) 和第三行 (y=3)。假设我们的矩阵显示 1,1 在左上角。

将 y 坐标减 1 乘以矩阵的宽度以获得一维列表中的单元格偏移数,然后进一步偏移 x - 1(请记住,Python 列表是基于 0 的)以正确定位在 x 轴上.

具有一维索引的矩阵示例:

0  |  1 |  2 |  3 |  4
5  |  6 |  7 |  8 |  9
10 | 11 | 12 | 13 | 14

取上面的算法:

index = (y - 1) * 5 + x - 1 # ((3 - 1) * 5 + 2 - 1) = 11

如您所见,根据示例用户输入,11 确实在我们的矩阵中的第二列和第三行。

然后,您可以通过简单的 for 循环显示矩阵,知道矩阵的大小并酌情插入新行。

如果要求用户也输入基于 0 的索引,您可以稍微简化上述内容。您不需要从 x 和 y 中减去 1。


推荐阅读