Почему "вход" в 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))  )  )