Переменная, используемая в качестве итератора, не меняет своего значения во вложенных циклах в Python - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующий фрагмент кода в моем скрипте, и я использую переменную cubecnt в качестве итератора для анализа всех файлов, которые у меня есть. Он должен go от 0 до parts_total, но, похоже, не работает. Как я могу изменить код, чтобы итератор работал правильно?

parts_total = 5
rgx_start = re.compile(r'End of powder drop')  # Line just before the start of the layer code: "; End of powder drop"
for cubecnt in range(0, (parts_total + 1)):
    for layercnt in range(0, (layers_total + 1)):
        f_path = ("{}{}{}{}".format(f_folder, f_name, cubecnt, f_ext))  # Complete path of the part to be loaded
        if layercnt == 0:
            start_i = 0
        else:
            start_i = int(prev_start[cubecnt][layercnt - 1])
        with open(f_path, 'r') as gcodesep:  # Opening each file separately
            part_gcode = gcodesep.readlines()
            for i, line in enumerate(part_gcode[start_i + 1:]):  # Searching for the beginning of given layer
                if rgx_start.search(line):
                    if (cubecnt == 0):
                        layer_start = start_i + i + 1
                    else:
                        layer_start = start_i + i + 2 # Avoid the step down for the layer thickness twice
                    prev_start[cubecnt][layercnt] = layer_start
                    break
        layercnt =+ 1
    cubecnt =+ 1

1 Ответ

0 голосов
/ 06 марта 2020

Функция range также имеет аргумент 'step', так что, возможно, это то, что вы действительно хотите использовать. Нет смысла использовать cubecnt = + 1, так как в начале каждой итерации l oop cubecnt присваивается значение в объекте диапазона.

...