Форум сайта python.su
0
Всего два дня как начал изучать питон. Абсолютный новичок в программировании. Подскажите где я ошибаюсь в коде и как это исправить?
n = int(input("number:")) #ввод числа while n % 2 > 0: # Начать цикл, если введенное число нечетное. n = 3 * n + 1 # умножить введенное число на 3 и прибавить 1. print(n) # напечатать итог if n % 2 == 0: # если итог четное n = n//2 # разделить итог ровно на 2 print(n) # напечатать новый итог if n % 2 == 1: # если новый итог равен 1 print(n) # напетать новый итог break # завершить цикл else: # если, новый итог нечетное число continue # вернуться в начало цикла. print("done")
Отредактировано Gastali (Окт. 5, 2021 18:02:36)
Офлайн
124
n = int(input("number:")) #ввод числа while True: if n % 2 != 0: # если число нечетное n = 3 * n + 1 # оно изменяется по формуле и всегда получается четное print(n) # выводится результат while n % 2 == 0: # пока оно четное n = n // 2 # делим на 2 print(n) # выводим if n == 1: # Если после деления на 2 итог равен 1 break # то цикл завершается else: # Если после деления на 2 итог это другое нечетное число, continue # то цикл начинается заново. print('done')
Офлайн
857
GastaliДля начала нужно точно описать задачу для самого себя же. Иначе, если ты не знаешь, к чему ты идёшь, то ты и не напишешь код, который приведёт тебя к этому. Самое глупое, что можно сделать, - это начать писать код, а потом по нему пытаться понять “а что же я, собственно, делаю-то?”.
Подскажите где я ошибаюсь в коде и как это исправить?
Офлайн
0
py.user.nextВполне понятна задача и для себя и изложил я ее тут достаточно понятно. Нужно что бы, при вводе нечетного числа, программа выполняла формулу 3*n+1 и печатала итог, если итог четное число то надо поделить на два и так далее, каждый раз когда число нечетное, код действует по формуле, а когда четное, то делит на 2. До тех пор, пока не получится 1. тогда останавливается цикл.
Офлайн
124
Gastaliя выше код выкладывал,не нравиться?
А вот мне новичку нужна помощь.
number:7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 done Process finished with exit code 0
Офлайн
857
>>> def f(): ... n = int(input('number: ')) ... while True: ... if n % 2 != 0: ... n = 3 * n + 1 ... print(n) ... while n % 2 == 0: ... n //= 2 ... print(n) ... if n == 1: ... break ... print('done') ... >>> f() number: 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 done >>>
Офлайн
0
xam1816Спасибо. Почему-то мне показалось что это просто цитирование моего корявого кода. сейчас пригляделся)) понял ошибку. благодарю)
Офлайн