我不能做那个循环功能

I can't do that loop function

这是我的项目,它是绘图机器人:

我设法完成了 F 和 R 功能。但是我的L功能总是出故障。 这是我的代码:

def func(list1):
numOfElements = int(len(list1))
for i in range(numOfElements):
    if list1[i] == "L":
        list2 = list1.copy()
        for j in range(i):
            list2.pop(j)
        list2.pop(0)
        while(list1[i]!="]"):
            func(list2)
            i=i+1
    if list1[i] == "F":
        value = list1[i + 1]
        tim.forward(value)
    if list1[i] == "R":
        value = list1[i + 1]
        tim.right(value)
    else:
        pass

我正在使用这张图片中的示例。我的代码将它们分成标记。然后我把他们放在名单上。 [![在此处输入图片描述][2]][2]

如果我有一个 L 函数,我可以做到这一点,但如果有嵌套的 L 函数,我就无法解决。 我怎样才能用我的 L 函数解决这个问题?

在这种情况下,您希望for i in range(...)循环在循环内递增,i=i+1赢了't 在下一次迭代中影响 i 的值。与 C 不同,Python for 循环会忽略下一次迭代对迭代变量的更改。

此外,不需要复制令牌。我们只需要正确地跟踪我们在令牌列表中的位置。这包括递归调用 return 它在到达 ']' 和 return 之前在标记列表中的位置。

让我们把所有这些放在一起并使用有意义的变量名:

from turtle import Screen, Turtle

example = ['L', 36, '[', 'L', 4, '[', 'F', 100, 'R', 90, ']', 'R', 10, ']']

def func(tokens, index=0):
    while index < len(tokens):
        command = tokens[index]
        index += 1

        if command == 'L':
            repetitions = tokens[index]
            index += 2  # also move past '['

            for _ in range(repetitions):
                new_index = func(tokens, index)

            index = new_index
        elif command == 'F':
            distance = tokens[index]
            index += 1
            turtle.forward(distance)
        elif command == 'R':
            angle = tokens[index]
            index += 1
            turtle.right(angle)
        elif command == ']':
            break

    return index

screen = Screen()
turtle = Turtle()

func(example)

screen.exitonclick()