2017-02-01 4 views
0
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.Счетчик остатков в функции

Чтобы быть понятным, при завершении функции необходимо напечатать «Готово», подсчитать, «круги были нарисованы».

ответ

1

Проходят счетчик в рекурсивном вызове, и распечатать его при печати 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) 
+0

Спасибо, но я не могу использовать переменную 'count' в if-statement, потому что она скажет, что она не определена? –

0

же, как ответ Barmar, в расширил отладки печати

Python 3 для печати()

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

добавлен по умолчанию var 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 
Смежные вопросы