Я пытаюсь выполнить очень простой код Python , содержащий обработку ошибок, в виде скрипта Bash , но хотя в Python код работает нормально, код создает проблемы при выполнении в Bash.
#!/usr/bin/python
x = input('Enter your number: ')
try:
x = float(x)
print('Your number multiplied by 2 is: ', x*2)
except ValueError:
print('not a valid choice')
x == 0
Это сообщение об ошибке от Bash:
Enter your number: -p Traceback (most recent call last):
File "cycle.py", line 3, in <module>
x=input('Enter your number: ')
File "<string>", line 1, in <module>
NameError: name 'p' is not defined
Как я понимаю, ошибка ввода должна была сначала обрабатываться Python, а затем она возвращала бы 0 состояний выхода в Bash, но, очевидно, это Это не так?
Вы пишете свой код в Python 3 (рассмотрение "печати"), но хижина предлагает Python 2 . Измените хижину на
#!/usr/bin/env python3
и выполните ее:
python3 /path/to/script.py
и это будет хорошо работать:)
Объяснение:
, Как подсказал в Florian Diesch', комментарий, input()
изменился в Python 3:
В Python 2, input()
попытки использовать вход в качестве выражения Python (как eval()
), в то время как в Python 3, input()
замены raw_input()
от Python 2.
Другой способ зафиксировать его, возьмите input
внутренний try
пункт. Это лучше except
любая ошибка. x=0
я думаю, что Вы имеете в виду присвоение там. Таким образом, это может принять, значения как: 2*3
#!/usr/bin/python
try:
x=input('Enter your number: ')
x=float(x)
print('Your number multiplied by 2 is: ', x*2)
except:
print('not a valid choice')
x = 0
Я предлагаю Вас raw_input
функция, чем input
.
input([prompt]) -> raw_input([prompt])
Эквивалентный оценке (raw_input (подсказка)).
Эта функция не фиксирует пользовательские ошибки. Если вход не будет синтаксически допустим, SyntaxError будет повышен. Другие исключения могут быть повышены, если существует ошибка во время оценки.
, Если readline модуль был загружен, то input()
будет использовать его для обеспечения тщательно продуманного редактирования строки и функций истории.
Рассматривают использование эти raw_input()
функция для общего входа от пользователей.
Вы видите об этом в https://docs.python.org/2.7/library/functions.html? highlight=input#input