Бесконечный цикл внутри цикла

Я написал свои первые строки (с помощью SO):

import rhinoscriptsyntax as rs

obj = rs.GetObject("Select a curve", rs.filter.curve)
maxd = input("max offset: ")
a = input("first offset: ")
b = input("next offset: ")


if rs.IsCurve(obj):
    i=0
    while i < maxd:
        rs.OffsetCurve( obj, [0,0,0], -i )
        i += a
        rs.OffsetCurve( obj, [0,0,0], -i )
        i += b

теперь я попытался пойти дальше, вставив список для смещенных входов. но кажется, что в конце я получаю бесконечный цикл... также, первый rs.OffsetCurve(), кажется, запускается два раза, или "i" не обновляется при первом запуске второго цикла rs.OffserCurve().

import rhinoscriptsyntax as rs

obj = rs.GetObject("Select a curve", rs.filter.curve)
maxd = input("max offset: ")
a = input("first offset: ")

offlist = []

while True:
    b = input("next offset or 0 for exit: ")
    offlist.append(b)
    if b == 0:
        break

if rs.IsCurve(obj):
    i=0
    while i < maxd:
        rs.OffsetCurve( obj, [0,0,0], -i )
        i = a
        c = len(offlist)
        k = 0
        while k != c:
            rs.OffsetCurve( obj, [0,0,0], -i )
            i = offlist[k]
            k += 1

2 ответа

Решение

while i < maxd: вместе с i = a на каждом шаге цикла и не меняется maxd ни a на обоих циклах вообще может вызывать такое поведение.

Кстати, я бы подумал назвать ваши переменные таким образом, чтобы вы или любой другой разработчик могли понять, что здесь происходит, одним лишь взглядом. Кроме того, вы можете подумать, стоит ли использовать вложенные while петли в этом случае.

Вы забыли обновить значение переменной a и, следовательно, счетчик i внешнего цикла while. Обычно я следую вручную значениям каждого счетчика внутри циклов в течение нескольких итераций для отладки моего кода.

Другие вопросы по тегам