python执行列表中的函数,Python/Turtle如何在lis中的每个子列表上执行函数

我是一个完整的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个变量,然后绘制第二个图标,等等

我是不是完全错了?这是一个初学者的任务,因此生成功能代码是唯一的要求,不管它有多难看。我现在还不需要优雅或简洁。这是我自己诚实地尝试完成挑战,但在这一点上遇到了障碍。在

如果您对此有任何帮助或了解,我们将不胜感激!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值