Последовательность Коллатца. Python
Не получается выполнить второй этап этой задачи, в обучающих материалах использовались только эти функции и инструкции + инструкция return. Можно использовать циклы for, while:
#Первый этап задачи (выполнил)
def collatz():
numberX = int(input())
if numberX % 2 == 0:
print(numberX // 2)
else:
print(3 * numberX + 1)
#Второй этап задачи (не выполнил, выдаёт ошибку.)
number = collatz()
if int(number) % 2 == 0:
print(int(collatz()) // 2)
else:
print(3 * int(collatz()) + 1)
Ответы (3 шт):
Автор решения: Danis
→ Ссылка
как сказал @entithat функция collatz должна что то возвращать, поэтому print замените на return
def collatz():
numberX = int(input())
if numberX % 2 == 0:
return numberX // 2
else:
return 3 * numberX + 1
Автор решения: roddar92
→ Ссылка
Действительно, функция должна что-то возвращать, если идёт речь об одном этапе. А если хотите довести число до единицы, добавьте цикл while.
def collatz_operation(n):
return n // 2 if n % 2 == 0 else 3 * n + 1
def collatz():
number = int(input())
while number > 1:
print(number)
number = collatz_operation(number)
print(1)
Автор решения: off set 552
→ Ссылка
def collatz(n):
while n != 1:
print(n)
if n % 2 == 1:
n= 3 * n + 1
else:
n = n // 2
print(n)
n= int(input("Введи число:"))
collatz(n)
