【问题标题】:Make a function take a subsequent parameter each time?让函数每次都带一个后续参数?
【发布时间】:2018-09-13 10:25:19
【问题描述】:

我正在尝试绘制 3 个矩形堆栈,其中每个堆栈由每个子列表中的第二个值表示的块数(629)

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 个 3 个堆栈,而不是分别 3 个 6、2 和 9 个堆栈。我的问题来自对列表和循环的理解缺乏理解。我需要我的函数从每个列表中获取第二个数字,并构建一个包含那么多矩形的堆栈,然后移动到下一个位置,读取下一个堆栈中有多少个并重复。

【问题讨论】:

    标签: python list for-loop turtle-graphics


    【解决方案1】:

    这是我根据你的海龟所做的修改你的代码:

    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) 这样的绝对转弯,因为它可以让您的程序更加灵活(想想旋转)。

    对列表的理解缺乏理解

    您的代码中没有列表推导,因此您可能需要重新阅读这些内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2015-07-24
      • 2016-12-13
      • 2016-09-02
      • 2016-01-15
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多