我是一个完整的Python新手,我的任务是创建一个将图标绘制成turtle网格(900x600网格,5列4行,每个正方形为150x150像素)的函数。图标的类型、位置和方向必须基于数据集中的4个给定变量。函数必须能够解释以下形式的数据集:data_set = [icon_style, bottom_left_column, bottom_left_row, orientation]
完整数据集的一个示例,绘制了4个图标,如下所示:
^{pr2}$
这意味着第一个图标是A类型,绘制在第1列第0行,朝北。第二个图标是类型C,绘制在第2列第1行,面向东。等等,对于该列表中的所有4个图标。在
为了解决这个问题,首先我定义了一个函数来解释列表并创建了4个变量,这些变量将由绘制图标的函数使用def read_icons(w,x,y,z):
if w == 'A':
icon = icon_01
elif w == 'B':
icon = icon_02
elif w == 'C':
icon = icon_03
elif w == 'D':
icon = icon_04
if x == 0:
x_coord = -450
elif x == 1:
x_coord = -300
elif x == 2:
x_coord = -150
elif x == 3:
x_coord = 0
elif x == 4:
x_coord = 150
elif x == 5:
x_coord = 300
if y == 0:
y_coord = -300
elif y == 1:
y_coord = -150
elif y == 2:
y_coord = 0
elif y == 3:
y_coord = 150
if z == 'N':
heading = 90
elif z == 'E':
heading = 0
elif z == 'S':
heading = 270
elif z == 'W':
heading = 180
最后,我在函数的末尾添加了这个来测试绘图-我打算以后把它移到我的draw_icons函数中icon()
read_icons(*data_set_01)
icon()告诉函数绘制图标,因此我可以查看是否正确绘制,read_icons(*data_set_01)根据data_set_01执行整个函数
这在绘制任何单个图标时都很有效,正确的图标将以正确的方向绘制在正确的位置。这适用于任何数据集,例如data_set_01 = ['B', 1, 2, 'N']
只有一个图标被绘制。在
但是,我的问题是,当我试图使用包含多个图标信息的数据集时,例如
^{pr2}$
我遇到了一大堆错误。在
下面是我创建draw_icons函数的最佳尝试,使用for each循环为每个子列表运行一次read_icons()函数:def draw_icons(data_set):
for sublist in data_set:
read_icons(*data_set)
penup()
goto(x_coord, y_coord)
setheading(heading)
pendown()
icon()
draw_icons(data_set_03)
但是,此代码会导致错误:goto(x_coord, y_coord)
NameError: global name 'x_coord' is not defined
而当只使用一个图标的变量时,定义我的x_坐标没有问题。在
我的第二次尝试是删除for循环,并在每个子列表上1乘1显式运行read_图标:def draw_icons(data_set):
read_icons(*data_set[0])
penup()
goto(x_coord, y_coord)
setheading(heading)
pendown()
icon()
read_icons(*data_set[1])
penup()
goto(x_coord, y_coord)
setheading(heading)
pendown()
icon()
read_icons(*data_set[2])
penup()
goto(x_coord, y_coord)
setheading(heading)
pendown()
icon()
read_icons(*data_set[3])
penup()
goto(x_coord, y_coord)
setheading(heading)
pendown()
icon()
但是也遇到了同样的错误。在
我希望以下的图标能画出你的作品:
根据u'的规则,定义u'的x,然后根据u'的规则,定义u'的图标。在
接下来,移动到data_set_03的第二个子列表,即:['C',2,1,'E'],根据read_icons()的规则重新定义w,x,y和z,并根据这些变量绘制下一个图标。在
冲洗并重复子列表3和4,直到所有4个图标都正确绘制。在
我认为数据集03分为以下子列表是否正确?在sublist 0 = ['A', 1, 0, 'N']
sublist 1 = ['C', 2, 1, 'E']
sublist 2 = ['A', 3, 2, 'S']
sublist 3 = ['A', 4, 3, 'W']
如果是这样,为什么我的for循环没有从第一个子列表生成4个变量,绘制图标,然后用第二个子列表中的新值覆盖4个变量,然后绘制第二个图标,等等
我是不是完全错了?这是一个初学者的任务,因此生成功能代码是唯一的要求,不管它有多难看。我现在还不需要优雅或简洁。这是我自己诚实地尝试完成挑战,但在这一点上遇到了障碍。在
如果您对此有任何帮助或了解,我们将不胜感激!在