Еще счетчик операторов в функции

import rhinoscriptsyntax as rs

def conCir(pt, r):
    if r <= 0:
        print "Done"
    else:
        rs.AddCircle(pt, r)
        return conCir(pt, r-1)

pt1 = rs.GetPoint("Pick First Point")
pt2 = rs.GetPoint("Pick Second Point")
r = rs.Distance(pt1, pt2)
conCir(pt1, r)

Я пытаюсь сделать концентрические круги, однако я не могу понять, как подсчитать количество созданных кругов. В идеальной ситуации этот счетчик встроен в функцию, но размещение его в первой строке приводит к сбросу на 0 при каждом вызове функции.

Чтобы было ясно, когда закончится, функция должна напечатать "Готово", считать "нарисованные круги".

2 ответа

Решение

Передайте счетчик в рекурсивном вызове и распечатайте его при печати Done

def conCir(pt, r, count=0):
    if r <= 0:
        print "Done"
        print count, " circles were drawn"
    else:
        rs.AddCircle(pt, r)
        return conCir(pt, r-1, count+1)

Так же, как ответ Бармара, расширенная отладочная печать

Python 3 print()

просто печатать вместо вызова круга для иллюстрации

добавлен вар по умолчанию count = 0 для рекурсии

def conCir(pt, r, count = 0):
    if r <= 0:
        print("Done", 'count= ', count)
    else:
        print('AddinCircle ',pt, r) # rs.AddCircle(pt, r)
        return conCir(pt, r-1, count + 1)

conCir('fred', 5) # count default = 0, no need to enter in call

AddinCircle  fred 5
AddinCircle  fred 4
AddinCircle  fred 3
AddinCircle  fred 2
AddinCircle  fred 1
Done count=  5
Другие вопросы по тегам