Я знаю, что есть несколько сообщений на этот вопрос. Но я не мог опубликовать свой код другим способом, кроме как задать вопрос. Может кто-нибудь, пожалуйста, помогите мне понять, как я могу предотвратить ввод n в функцию collatz каждый раз, когда выполняется глобальная область.
Напишите функцию с именем collatz (), которая имеет один параметр с именем number. Если число четное, то collatz () должно напечатать число // 2 и вернуть это значение. Если число нечетное, то collatz () должно напечатать и вернуть 3 * число + 1.
Затем напишите программу, которая позволяет пользователю вводить целое число и которая продолжает вызывать collatz () для этого числа до функции возвращает значение 1. (Удивительно, но эта последовательность на самом деле работает для любого целого числа - рано или поздно, используя эту последовательность, вы получите 1! Даже математики не уверены, почему. Ваша программа изучает то, что называется последовательностью Коллатца, иногда называется «простейшей невозможной математической задачей».) # Не забудьте преобразовать возвращаемое значение из input () в целое число с помощью функции int (); в противном случае это будет строковое значение. желаемый вывод
3 10 5 16 8 4 2 1
Проверка входных данных Добавьте операторы проб и исключений в предыдущий проект, чтобы определить, вводит ли пользователь не целую строку. Обычно функция int () вызывает ошибку ValueError, если ей передается нецелая строка, как в int ('puppy'). В предложении "исключение" выведите пользователю сообщение о том, что он должен ввести целое число.
def collatz(number):
if number%2==0:
number=number//2
print(number)
elif number%2==1:
number=3*number+1
print(number)
print('Enter number: ')
n=int(input())
while n!=1:
collatz(n)