Почему "вход" в Python 3 выбрасывает NameError: name... не определено
У меня есть test
строковой переменной, в Python 2.x это работает нормально.
test = raw_input("enter the test")
print test
Но в Python 3.x я делаю:
test = input("enter the test")
print test
с входной строкой sdas
, и я получаю сообщение об ошибке
Traceback (последний вызов был последним):
Файл "/home/ananiev/PycharmProjects/PigLatin/main.py",
строка 5, в тесте = ввод ("введите тест")
Файл "", строка 1, в NameError: имя 'sdas' не определено
Ответы
Ответ 1
Вы используете свой код Python 3 с помощью интерпретатора Python 2. Если бы вы этого не сделали, ваш оператор print
высвободил SyntaxError
, прежде чем он когда-либо попросит вас ввести данные.
В результате вы используете Python 2 input
, который пытается eval
ввести ваш вход (предположительно sdas
), обнаруживает, что он недействителен Python и умирает.
Ответ 2
Я бы сказал, что вам нужен код:
test = input("enter the test")
print(test)
В противном случае он не должен запускаться вообще из-за синтаксической ошибки. Функция print
требует скобок в python 3. Я не могу воспроизвести вашу ошибку. Вы уверены, что это строки, вызывающие эту ошибку?
Ответ 3
sdas считывается как переменная. Чтобы ввести строку, вам нужно "
Ответ 4
Я получил ту же ошибку. В терминале, когда я набрал "python filename.py", с помощью этой команды python2 пытался запустить код python3, потому что написано python3. Он работает правильно, когда я набираю "python3 filename.py" в терминале. Я надеюсь, что это работает и для вас.
Ответ 5
В операционных системах, таких как Ubuntu Python поставляется с предустановленной. Таким образом, версия по умолчанию - Python 2.7. Вы можете подтвердить версию, введя команду ниже в своем терминале.
python -V
если вы установили его, но не установили версию по умолчанию, вы увидите
python 2.7
в терминале. Я расскажу вам, как установить версию Python по умолчанию в Ubuntu.
Простой безопасный способ - использовать псевдоним. Поместите это в файл ~/.bashrc или ~/.bash_aliases:
alias python=python3
После добавления вышеупомянутого в файл, выполните команду ниже:
source ~/.bash_aliases
или source ~/.bashrc
Теперь снова проверьте версию python -V
используя python -V
Если Python версии 3.xx один, то ошибка в вашем синтаксисе, как использование печати с круглыми скобками. измените это на
test = input("enter the test")
print(test)
Ответ 6
Если мы оставим в стороне синтаксическую ошибку печати, то способ использования ввода в нескольких сценариях -
Если вы используете Python 2.x:
then for evaluated input use "input"
example: number = input("enter a number")
and for string use "raw_input"
example: name = raw_input("enter your name")
Если вы используете Python 3.x:
then for evaluated result use "eval" and "input"
example: number = eval(input("enter a number"))
for string use "input"
example: name = input("enter your name")
Ответ 7
temperature = input("What the current temperature in your city? (please use the format ??C or ???F) >>> ")
### warning... the result from input will <str> on Python 3.x only
### in the case of Python 2.x, the result from input is the variable type <int>
### for the <str> type as the result for Python 2.x it neccessary to use the another: raw_input()
temp_int = int(temperature[:-1]) # 25 <int> (as example)
temp_str = temperature[-1:] # "C" <str> (as example)
if temp_str.lower() == 'c':
print("Your temperature in Fahrenheit is: {}".format( (9/5 * temp_int) + 32 ) )
elif temp_str.lower() == 'f':
print("Your temperature in Celsius is: {}".format( ((5/9) * (temp_int - 32)) ) )