Форум сайта python.su
0
Есть простенький код:
import operator
def function_f(n):
k = 0
while n>0:
if n % 2 == 1:
k = 1
a = divmod(n, 2)
return k + function_f(a)
return 0
b=213
print (function_f(b))
и странная ошибка:
Traceback (most recent call last):
File “C:\Users\iglyakho\shad3v1.py”, line 12, in <module>
print (function_f(b))
File “C:\Users\iglyakho\shad3v1.py”, line 8, in function_f
return k + function_f(a)
File “C:\Users\iglyakho\shad3v1.py”, line 4, in function_f
while n>0:
TypeError: unorderable types: tuple() > int()
Моих скромных познаний не хватает, чтобы понять каким образом переменная в формате int превращается в кортеж.
Расскажите, пожалуйста, где я неправ 
Отредактировано locky_kid (Май 12, 2013 13:57:51)
Офлайн
43
a = divmod(n, 2) return k + function_f(a)
divmod(3, 2) Out[3]: (1, 1)
Офлайн
31
a = divmod(n, 2) return k + function_f(a[0])
Офлайн
7
import operator def function_f(n): k = 0 while n>0: if n % 2 == 1: k = 1 a = divmod(n, 2) return k + function_f(a[0]) n -= 1 return 0 b=213 print('count= ', function_f(b))
Офлайн
31
онлайн
http://www.pythontutor.com/visualize.html#
отлаживайте
Офлайн
0
Спасибо огромное, товарищи!
Офлайн