Я пытаюсь создать простую программу, которая запускает последовательность Collatz для числа, введенного пользователем.Я также использую это для того, чтобы попытаться освоить использование операторов «try кроме» в Python, бросая оператор печати всякий раз, когда пользователь вводит строку, а не целое число.
Программа работает, как и ожидалось, при вводецелое число, например, здесь я ввожу число 12 и получаю следующий вывод:
$ python collatzSequence.py
Enter in a number:
12
6
3
10
5
16
8
4
2
1
Однако, когда вы вводите строку, я получаю эту ошибку:
python collatzSequence.py
Enter in a number:
ddd
Traceback (most recent call last):
File "collatzSequence.py", line 34, in <module>
main()
File "collatzSequence.py", line 25, in main
numb = input()
File "<string>", line 1, in <module>
NameError: name 'ddd' is not defined
Когда что яхочу быть в состоянии поймать, когда пользователь вводит что-то, что не является целым числом, и печатать «Пожалуйста, введите целое число».
Ниже приведен мой код, который я написал, я поместил «попробовать, кроме'внутри функции collatz (), я также пытался поместить ее в функцию main (), но получил тот же результат.:
# Exploring the 'Collatz Sequence'.
# If number is even, print number // 2 and returns this value.
# If number is odd, print and return 3 * number + 1.
def collatz( number ) :
# Error handling to make sure number entered is an int.
try:
number = int(number)
except NameError :
print( 'Please enter an integer.')
return
# number is even.
if number % 2 == 0 :
print( str(number // 2) )
return number // 2
# number is odd.
else :
print( str(3 * number + 1) )
return 3 * number + 1
# Lets user type in an integer and keeps calling collatz() on that number until the funciton returns the value 1.
def main() :
print( "Enter in a number: " )
numb = input()
numb = collatz(numb)
while numb != 1 :
numb = collatz(numb)
if __name__ == "__main__":
main()
Спасибо за любую помощь, кто-нибудь может помочь мне решить, что я могу сделать, чтобы решить эту проблему.