2016-08-16 2 views
-1

Я работаю с роботом pi2go lite. Это мой кодКак подсчитать количество вызовов метода?

import pi2go, time 
import sys 
import tty 
import termios 
import time 
pi2go.init() 

def stepCount(): 
    countL += 0 
    countR += 0 


speed = 60 
try: 
    pi2go.stepForward(60,16) 
    print stepCount 

finally: 
    pi2go.cleanup() 

вопрос, я задаюсь вопросом, как считать каждый раз в «pi2go.stepForward (60,16)» используется.

+2

Это ваш код? Как бы то ни было, это должно вызвать многочисленные ошибки, поскольку 'countL' ​​и' countR' не определены. Кроме того, печать 'stepCount' (или' stepCount() 'по сути) не будет полезна. – DeepSpace

+0

Эта ссылка решит проблему, ответ уже существует: http://stackoverflow.com/questions/21716940/is-there-a-way-to-track-the-number-of-times-a-function-is -called – d3r1ck

ответ

0
counter = dict(ok=0, fail=0, all=0) 
try: 
    pi2go.stepForward(60,16) 
    counter['ok'] += 1 
except: 
    counter['fail'] += 1 
finally: 
    counter['all'] += 1 
    pi2go.cleanup() 
+0

Спасибо !!! Отлично работает! – OmamArmy

0

Вы были очень близки. stepCount - это функция, поэтому вы должны ее назвать - это добавить круглые скобки в конце.

speed = 60 
try: 
    pi2go.stepForward(60,16) 
    stepCount() 

Также вы не определили countL и countR. Поэтому вам нужно определить те, которые были перед вами.

Но лучшим способом было бы обернуть pi2go.stepForward(60,16) в другой функции.

Как:

countL = 0 
countR = 0 

def stepForward(x, y): 
    countL += 1 
    countR += 1 
    pi2go.stepForward(x,y) 

И тогда вы можете просто позвонить stepForward(60, 16).

+0

'stepCount' метод не возвращает значение. – niyasc

+0

Вызов 'stepCount' приведет к' NameError', учитывая, что OP отправил весь свой код. – DeepSpace

+0

Да, я заметил немного поздно и обновлял свой ответ. – masnun

Смежные вопросы