我陷入了这个问题。
def showMatrix(turtle_object, sparse_matrix):
showMatrix()
函数将使用点网格可视化矩阵内容。每个网格位置将对应一个矩阵位置(行,列)。出现“点”表示条目为非零。
首先,您需要使用以下命令设置显示坐标以匹配矩阵范围
screen.setworldcoordinates()
方法。换句话说,显示屏的左下角将
变为坐标(0,0),右上角将为(第1行,第1列)。切换画面
通过匹配“网格”,坐标以这种方式简化了矩阵索引到屏幕坐标的映射
和矩阵坐标。
使用乌龟.goto
和.dot
方法,为每个矩阵绘制一个红点。
这是我到目前为止所做的工作:
def matrix(n, init):
matrix = []
for i in range(n):
row = []
for j in range(n):
row.append(init)
matrix.append(row)
return matrix
def sparse_matrix(matrix,n,value):
import random
ctr = 0
while ctr < n:
row = random.randint(0,order(m)-1)
col = random.randint(0,order(m)-1)
if matrix[row][col] != value:
matrix[row][col] = value
ctr += 1
return matrix
def showMatrix(turtle_object, sparse_matrix):
for i in len(m):
for j in len(m):
if sparse_matrix[i][j] != 0:
sparse_matrix[i][j] = turtle_object
return sparse_matrix
答案 0 :(得分:3)
(行1,列1)问题是什么意思?
这与您神秘的m
变量和您未定义的order()
函数有关。让我们继续吧。从matrix()
函数中可以看到,我们正在处理一个方矩阵,但我们甚至不用假设。在sparse_matrix()
函数中,我们可以这样做:
rows = len(sparse_matrix)
columns = len(sparse_matrix[0])
接着检查rows
是否为零。
如何在乌龟上显示稀疏矩阵?
您的sparse_matrix()
函数未正确使用turtle_object
-我们不想存储它,我们想让它画东西。而且此函数可能不应返回任何内容。我猜应该看起来像这样:
def showMatrix(turtle_object, sparse_matrix):
rows = len(sparse_matrix)
if rows == 0:
return
columns = len(sparse_matrix[0])
turtle_object.penup()
for r in range(rows):
for c in range(columns):
if sparse_matrix[r][c] != 0:
turtle_object.goto(c, r)
turtle_object.dot(dot_size, "red")
dot_size
现在为1。用一些乌龟代码包装:
from turtle import Screen, Turtle
# ...
m = 6
screen = Screen()
dot_size = 1
yertle = Turtle(visible=False)
mat = matrix(order(m), 0)
sparse_matrix(mat, order(m / 2), 1)
showMatrix(yertle, mat)
screen.mainloop()
我们得到的图形不令人满意:
因为一切都太小,需要扩大规模。
我不确定如何使用screen.setworldcoordinates()
我们可以使用乌龟自己的setworldcoordinates()
将窗口弯曲到我们的图形限制,而不是直接在我们的图形代码中添加比例因子:
screen.setworldcoordinates(0, 0, order(m), order(m))
dot_size = screen.window_width() / order(m)
这使我们在视觉上更加满意:
我希望这个草图能使您朝正确的方向前进。