我正在尝试编写代码,该代码在列表中相同索引所包含的xy坐标中绘制列表 sides 中由长度 - 宽度对表示的每个矩形 COORDS 即可。
变量 coords 包含大小为2的子列表,其中每个值都代表x和y坐标。
变量边还包含大小为2的子列表,其中每个值都代表长度,然后是矩形的宽度。
我已经编写了一个名为 draw_rectangle 的函数,它将两个整数作为参数,表示长度,然后是矩形的宽度。
说完了,我现在很难做出for
循环。
这就是我出来的,似乎无法工作
for pair in sides:
penup()
goto(coords[index])
pendown()
draw_ractangle(sides[index][0], sides[index][1])
或者我必须去
for draw_ractangle()
有什么建议吗?谢谢
答案 0 :(得分:0)
这似乎是enumerate()
和结构分配的问题:
sides = [(34, 23), (65, 72)]
coords = [(10, 100), (-45, 60)]
# ...
for index, (width, height) in enumerate(sides):
penup()
goto(coords[index])
pendown()
draw_rectangle(width, height)
答案 1 :(得分:0)
我希望看到这个用zip来处理:
for (location, dimensions) in zip(coords, sides):
penup()
goto(location)
pendown()
draw_rectangle(*dimensions)
通常,python样式更喜欢避免循环索引而转而使用循环内容。通过创建元组列表,zip
函数是实现此目的的一种很好的方法。
我对平行列表模式感到担忧,该模式通常很脆弱且容易破损,并且更愿意看到表示要绘制的每个对象的数据结构,以避免位置和维度不同步的危险。