Найти - Пользователи
Полная версия: Товарищи, уделите минутку внимания, пожалуйста!
Начало » Python для новичков » Товарищи, уделите минутку внимания, пожалуйста!
1
locky_kid
Есть простенький код:
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 превращается в кортеж.
Расскажите, пожалуйста, где я неправ
sergeek
a = divmod(n, 2)
return k + function_f(a)

divmod(3, 2)
Out[3]: (1, 1)
sanodin
a = divmod(n, 2)
return k + function_f(a[0])

только цикл получился бесконечный
elisk
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))
sanodin
онлайн
http://www.pythontutor.com/visualize.html#

отлаживайте
locky_kid
Спасибо огромное, товарищи!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB