Я пытаюсь написать программу Collatz, используя рекомендации из проекта, приведенного в конце главы 3 "Автоматизация скучных вещей с помощью Python". Я использую Python 3.4.0
. Ниже приводится схема проекта:
Напишите функцию с именем collatz()
которая имеет один параметр с именем number. Если число четное, то collatz()
должно напечатать number//2
и вернуть это значение. Если число нечетное, то collatz()
должно напечатать и вернуть 3 * number + 1
. Затем напишите программу, которая позволяет пользователю вводить целое число и продолжает вызывать collatz()
для этого числа, пока функция не вернет значение 1
.
Вывод этой программы может выглядеть примерно так:
Enter number: 3 10 5 16 8 4 2 1
Я пытаюсь сделать функцию, которая использует операторы if
и elif
в цикле while. Я хочу, чтобы число печаталось, а затем возвращалось к началу цикла и уменьшало себя до единицы, используя последовательность Коллатца, причем каждый экземпляр результирующего числа печатался по мере прохождения цикла. С моим текущим кодом я могу печатать только первый экземпляр числа, и этот номер не проходит цикл после этого. Ниже приведен мой код:
#collatz
print("enter a number:")
try:
number = (int(input()))
except ValueError:
print("Please enter a valid INTEGER.")
def collatz(number):
while number != 1:
if number % 2==0:
number = (number//2)
#print(number)
return (print(int(number)))
elif nnumber % 2==1:
number = (3*number+1)
#print(number)
return (print(int(number)))
continue
collatz(number)