Python——使用嵌套列表的海龟图形。我如何解决这个问题?
我有一个嵌套列表,如下所示:Python——使用嵌套列表的海龟图形。我如何解决这个问题?,python,list,nested-lists,turtle-graphics,Python,List,Nested Lists,Turtle Graphics,我有一个嵌套列表,如下所示: data_set_07 = [['A', 1, 3, 'S'], ['A', 2, 3, 'S'], ['A', 3, 1, 'S'], ['A', 3, 0, 'S'], ['A', 5, 2, 'S'], ['A', 5, 3, 'S'], ['B', 0, 0, 'S'], ['B', 0, 2, 'S'], ['C', 3, 2, 'S'], ['C', 4, 0, '
data_set_07 = [['A', 1, 3, 'S'], ['A', 2, 3, 'S'], ['A', 3, 1, 'S'],
['A', 3, 0, 'S'], ['A', 5, 2, 'S'], ['A', 5, 3, 'S'],
['B', 0, 0, 'S'], ['B', 0, 2, 'S'],
['C', 3, 2, 'S'], ['C', 4, 0, 'S'],
['D', 1, 0, 'S']]
'A'
,'B'
,'C'
和'D'
均为尺寸参考(1x1、1x2、2x2等)。
数字是指图形上的特定列和行,'S'
代表“南”(如中所示,图标应朝南)
我已经在python上使用turtle图形绘制了4个不同的图标,我需要在这些不同的设置中在图形上绘制每个图标(一些图标比其他图标小,并且位于不同的位置,但都特定于列表中的上述数字)
我需要知道的是,我该如何处理我的代码,以添加数据集\u 07
,从而使我的图标在图形上处于正确的位置,而不仅仅是默认位置
与数据集\u 07一起使用的我的一个图标:
def NBC(data_set):
pu()
color('yellow')
begin_fill()
setheading(183)
pd()
fd(150)
circle(-40, 190)
right(19)
fd(165)
end_fill()
pu()
left(5)
fd(5)
left(173)
pd()
color('orange')
begin_fill()
pd()
fd(150)
circle(-40, 190)
right(19)
fd(165)
end_fill()
pu()
left(5)
left(173)
pd()
color('red')
begin_fill()
pd()
fd(150)
circle(-40, 190)
right(19)
fd(165)
end_fill()
pu()
setheading(90)
right(170)
left(168)
pd()
color('purple')
begin_fill()
pd()
fd(150)
circle(-40, 190)
right(19)
fd(165)
end_fill()
pu()
left(179)
pd()
color('blue')
begin_fill()
pd()
fd(150)
circle(-40, 190)
right(19)
fd(165)
end_fill()
pu()
left(180)
pd()
color('green')
begin_fill()
pd()
fd(150)
circle(-40, 190)
right(19)
fd(165)
end_fill()
pu()
NBC(data_set_07)
看起来您的图标总是以相同的大小绘制。如果你想根据尺寸改变大小,我认为,你必须参数化你的图标功能。差不多
def NBC(height, width, x, y)
然后您必须添加代码以移动到(x,y)开始。我已经很多年没有看过海龟图形了,所以我不能说这是什么确切的命令。之后,你必须根据高度和宽度来调整你的动作。(高度和宽度可以是默认大小的倍数,因此,高度=1,宽度=1表示以默认大小绘制,高度=1,宽度=2表示以默认高度绘制,但使宽度加倍。)
如果您真的想这样更改纵横比,您可能不喜欢结果。您还必须更改标题。只需要一点三角法就可以算出角度应该是多少。如果原始标题是θ,那么新标题将是θ
arctan(宽度*tan(θ)/高度)
如果我没有犯错误。通过将方向作为参数传递,也可以使徽标面向不同的方向。如果默认方向是“E”,那么您可以定义一个dict,比如
angle={E':0,'N':90,'W':180,'S':270}
将所需方向作为参数φ传递,并将角度φ添加到所有标题
我建议你不要一下子把这一切都搞定。首先,将徽标移动到不同的位置。然后在纵横比不变的地方进行缩放(宽度=高度)。然后改变方向。最后,如果您真的愿意,请尝试更改纵横比。看起来您的图标将始终以相同的大小绘制。如果你想根据尺寸改变大小,我认为,你必须参数化你的图标功能。差不多
def NBC(height, width, x, y)
然后您必须添加代码以移动到(x,y)开始。我已经很多年没有看过海龟图形了,所以我不能说这是什么确切的命令。之后,你必须根据高度和宽度来调整你的动作。(高度和宽度可以是默认大小的倍数,因此,高度=1,宽度=1表示以默认大小绘制,高度=1,宽度=2表示以默认高度绘制,但使宽度加倍。)
如果您真的想这样更改纵横比,您可能不喜欢结果。您还必须更改标题。只需要一点三角法就可以算出角度应该是多少。如果原始标题是θ,那么新标题将是θ
arctan(宽度*tan(θ)/高度)
如果我没有犯错误。通过将方向作为参数传递,也可以使徽标面向不同的方向。如果默认方向是“E”,那么您可以定义一个dict,比如
angle={E':0,'N':90,'W':180,'S':270}
将所需方向作为参数φ传递,并将角度φ添加到所有标题
我建议你不要一下子把这一切都搞定。首先,将徽标移动到不同的位置。然后在纵横比不变的地方进行缩放(宽度=高度)。然后改变方向。最后,如果您真的想更改纵横比,请尝试更改纵横比