0

我有一个程序,用户应该能够从下拉列表中选择命令。在这个列表中,还有一个重复命令,它基本上完成了 for 循环所做的工作,因此介于两者之间的所有命令repeatend repeat应该循环指定的次数。见图片:

在此处输入图像描述

现在,我还不知道如何以编程方式处理重复功能。我知道python处理对象之类的类,所以也许这会有所帮助,但我有点迷茫。

目前,我将字符串列表发送到处理命令执行的线程,并对其进行解析并执行每个命令。

def command(self, item):
    if item.startswith('Pan'):
        ... do stuff
    elif item.startswith('...'):
        ... do something else

我将如何重写它,使其repeat成为一个可调用的函数/方法?

4

1 回答 1

1

创建一个接受多个命令的函数multi_command,并按顺序执行它们。当此函数遇到“重复”时,创建一个包含所有以下命令的列表,直到获得相应的“结束重复”。然后,此新列表是您的总列表的子集。使用此列表调用multi_command,然后跳到“结束重复”之后的命令。

伪代码:

def multi_commands(items):
    highest_idx_already_done = 0
    for idx, item in enumerate(items):
        if highest_idx_already_done > idx:
            continue
        if item == "repeat":
            num_repeats = ...
            sub_items = []
            for sub_item in items[idx+1:]:
                if sub_item == "end repeat":
                   break
                sub_items.append(sub_item[5:]) # Skip indentation
            highest_idx_already_done = idx + len(sub_items)
            for _ in range(num_repeats):
                multi_commands(sub_items)
        else:
            command(item)
于 2016-03-04T09:28:00.980 回答