Бесконечный цикл while внутри цикла while - PullRequest
0 голосов
/ 04 мая 2018

Я написал свои первые строки (с помощью 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() цикла while.

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 ]

0 голосов
/ 04 мая 2018

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

0 голосов
/ 04 мая 2018

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

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

...