Python try / except с последовательностью Collatz
Я пытаюсь написать последовательность Collatz при добавлении try и except statement для определения того, вводит ли пользователь в строку noninteger, и я не могу понять, как это сделать. Если вы прочитали Try / Except in Python: как вы правильно игнорируете Исключения? , но я все еще в растерянности. Мой код:
def collatz(y): try: if y % 2 == 0: print(int(y/2)) return int(y/2) else: print(int(y*3+1)) return int(y*3 +1) except ValueError: print('Error: Invalid Value, the program should take in integers.') print('Please enter a number and the Collatz sequence will be printed') x = int(input()) while x != 1: x = collatz(x)
- Запуск сценария python в качестве службы Windows
- Порядок присвоения Python
- Создайте пустой список для каждого элемента в списке
- cookie веб-браузера
- Как установить sys.modules = <текущий модуль>
При collatz()
вводе программа выйдет из строя, прежде чем вы collatz()
с кодом, когда вы его написали, а это означает, что ваш блок try
не поймает исключение:
def collatz(y): try: if y % 2 == 0: print(int(y/2)) return int(y/2) else: print(int(y*3+1)) return int(y*3 +1) except ValueError: print('Error: Invalid Value, the program should take in integers.') print('Please enter a number and the Collatz sequence will be printed') x = int(input()) # <-- THIS throws ValueError if input is non integer... while x != 1: x = collatz(x) # <-- ...but your try/except is in here.
Вместо этого завершите преобразование ввода в том же try / except. Тогда в функции collatz()
нет необходимости:
def collatz(y): if y % 2 == 0: print(int(y/2)) return int(y/2) else: print(int(y*3+1)) return int(y*3 +1) print('Please enter a number and the Collatz sequence will be printed') try: x = int(input()) except ValueError: print('Error: Invalid Value, the program should take in integers.') exit() while x != 1: x = collatz(x)
- Python получает вложенный элемент dict
- Функция таймаута, если требуется слишком много времени для завершения
- python объединяет строки в dataframe и добавляет значения
- Сохранение данных для вызова функций Python
- Облачные конечные точки с несколькими классами служб
- Как pdb код Python со входом?
- Текст на иврите в Python
- Intellij IDEA 12: Как получить PEP8 на лету
- Соглашение об именах в коллекциях: почему некоторые строчные буквы и другие CapWords?