Я только начал изучать 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
Автоматизируйте скучные вещи с помощью Python. Глава 4. Последовательность Коллатца ⇐ Python
Программы на Python
1775200178
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
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия