我正在尝试绘制3个矩形堆栈,其中每个堆栈由每个子列表中第二个值表示的块数组成( 6 , 2 和 9 )
from turtle import *
myList = [[1, 6], [2, 2],[3, 9]]
def rectangles(num_layers):
for x in myList:
num_layers = x[1]
pendown()
color('Black', 'Aquamarine')
begin_fill()
setheading(180)
forward(220)
setheading(90)
forward(50)
setheading(0)
forward(220)
setheading(270)
forward(50)
end_fill()
penup()
setheading(90)
forward(50)
for y in myList:
if y[0] == 1:
goto(0,0)
rectangles(myList)
elif y[0] == 2:
goto(300, 0)
rectangles(myList)
elif y[0] == 3:
goto(600, 0)
rectangles(myList)
然而,而不是3个堆栈分别为6,2和9,我得到3个堆栈3.我的问题来自对列表和循环的理解缺乏理解。我需要我的函数从每个列表中获取第二个数字,然后构造一堆那么多矩形然后移动到下一个位置,读取下一个堆栈中的数量并重复。
答案 0 :(得分:0)
这是我根据您的乌龟似乎正在做的事情重新编写代码:
from turtle import *
myList = [(1, 6), (2, 2), (3, 9)]
def rectangles(num_layers):
for _ in range(num_layers):
pendown()
begin_fill()
for _ in range(2):
backward(220)
right(90)
backward(50)
right(90)
end_fill()
penup()
right(90)
backward(50)
left(90)
setup(950, 550)
color('black', 'aquamarine')
penup()
for y, x in myList:
goto(300 * (y - 1) - 225, -200)
rectangles(x)
mainloop()
你可以尝试使用像left(90)
这样的相对转弯,而不是像heading(90)
这样的绝对转弯,因为它会使你的程序更灵活(想想旋转。)
缺乏对理解列表的理解
您的代码中没有列表推导,因此您可能想重读这些内容。