Автоматизируйте скучные вещи с помощью Python. Глава 4. Последовательность КоллатцаPython

Программы на Python
Ответить
Anonymous
 Автоматизируйте скучные вещи с помощью Python. Глава 4. Последовательность Коллатца

Сообщение Anonymous »

Я только начал изучать Python и хотел бы прояснить, почему этот конкретный код, который я создал для этой проблемы, не работает, а этот другой код работает. У меня возникли проблемы с пониманием того, как вызывается код и почему мне кажется, что для моего кода я получаю ошибку превышения максимальной глубины рекурсии. Я опубликую другой правильный код, чтобы кто-нибудь мог объяснить разницу между обоими кодами.
Можно ли как-нибудь изменить мой код, чтобы он работал, или мне нужно делать то, что говорит другой код, где мне нужно определить функцию, а цикл while не может быть внутри функции, потому что мне кажется, что именно в этом и заключается проблема.
Мой код:
def collatz(number):
while number != 1:
number=collatz(number)
if number % 2 == 0:
print ((int(number))//(2),sep='')
return ((int(number))//(2))

elif number % 2 == 1:
print (3*int(number)+1,sep='')
return (3*int(number)+1)

print('Enter number:')
number=int(input('>'))
collatz(number)

Правильный код:
def collatz(number):
if number % 2 ==0: #even number
print ((int(number))//(2),sep='')
return ((int(number))//(2))

elif number % 2 ==1:#odd number
print (3*int(number)+1,sep='')
return (3*int(number)+1)

try:
print('Enter number:')
number=int(input('>')) #user input
while number !=1: #performs loop until number becomes 1
number=collatz(number) #number gets passed to collatz function until it arrives at 1

except ValueError:
print('Please enter an integer')#error message if non-integer is input
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»