while循环中的无限while循环

2024-03-29 10:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了我的第一行(在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()似乎运行了两次,或者第二个rs.OffserCurve()while循环的第一次运行没有更新i。你知道吗

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

Tags: importobjinputifasselectoffsetcurve
2条回答

在循环的每一步while i < maxd:i = a,并且在两个循环中都不改变maxda可能导致这种行为。你知道吗

顺便说一句,我会考虑以这样的方式命名您的变量:您或任何其他开发人员只要看一眼就可以理解这里发生了什么。此外,您还可以考虑在这种情况下使用嵌套的while循环是否是个好主意。你知道吗

您忘记了更新变量a的值,结果是外部while循环的计数器i。 我通常做的是手动跟踪循环中每个计数器的值,进行几次迭代以调试代码。你知道吗

相关问题 更多 >