input (): "NameError: имя 'n' не определено"
43063 просмотра
2 ответа
Итак, я пишу код проверки оценки в Python, и мой код:
unit3Done = str(input("Have you done your Unit 3 Controlled Assessment? (Type y or n): ")).lower()
if unit3Done == "y":
pass
elif unit3Done == "n":
print "Sorry. You must have done at least one unit to calculate what you need for an A*"
else:
print "Sorry. That's not a valid answer."
Когда я запускаю его через мой python-компилятор и выбираю "n"
, я получаю сообщение об ошибке:
"NameError: имя 'n' не определено"
и когда я выбираю, "y"
я получаю другое NameError
с 'y'
проблемой, но когда я делаю что-то еще, код работает как обычно.
Любая помощь очень ценится,
Спасибо.
Автор: Cal Courtney Источник Размещён: 12.11.2019 09:54Ответы (2)
18 плюса
Используйте raw_input
в Python 2, чтобы получить строку, input
в Python 2 эквивалентно eval(raw_input)
.
>>> type(raw_input())
23
<type 'str'>
>>> type(input())
12
<type 'int'>
Итак, когда вы вводите что - то подобное n
в input
то думает , что вы ищете переменную с именем n
:
>>> input()
n
Traceback (most recent call last):
File "<ipython-input-30-5c7a218085ef>", line 1, in <module>
type(input())
File "<string>", line 1, in <module>
NameError: name 'n' is not defined
raw_input
работает отлично:
>>> raw_input()
n
'n'
помощь по raw_input
:
>>> print raw_input.__doc__
raw_input([prompt]) -> string
Read a string from standard input. The trailing newline is stripped.
If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
On Unix, GNU readline is used if enabled. The prompt string, if given,
is printed without a trailing newline before reading.
помощь по input
:
>>> print input.__doc__
input([prompt]) -> value
Equivalent to eval(raw_input(prompt)).
Автор: Ashwini Chaudhary
Размещён: 01.07.2013 08:54
3 плюса
Вы используете input()
функцию на Python 2. Используйте raw_input()
вместо этого или переключитесь на Python 3.
input()
выполняется eval()
на заданном вводе, поэтому ввод n
интерпретируется как код Python, ищущий n
переменную. Вы можете обойти это, введя 'n'
(например, с кавычками), но это вряд ли решение.
В Python 3 raw_input()
был переименован в input()
, полностью заменяя версию из Python 2. Если ваши материалы (книги, заметки о курсах и т. Д.) Используются input()
так, как ожидается n
, вам, вероятно, придется перейти на использование Python 3.
Вопросы из категории :
- python Обработка XML в Python
- python Как я могу использовать Python itertools.groupby ()?
- python Python: На какой ОС я работаю?
- python Как я могу создать непосредственно исполняемое кроссплатформенное приложение с графическим интерфейсом на Python?
- python Вызов функции модуля с использованием его имени (строки)
- python Звук Питона («Колокол»)
- terminal Как выделить и портировать вывод gdb во время интерактивной отладки?
- terminal Как скомпилировать и запустить C / C ++ в консоли Unix / Mac?
- terminal Как напечатать цветной текст в терминале в Python?
- terminal Терминал Mac OS X: опция карты + удалить для «обратного удаления слова»
- terminal Как установить мою оболочку по умолчанию на Mac?
- nameerror Python: NameError: глобальное имя 'foobar' не определено
- nameerror Почему моя функция python не определена, если она существует в том же файле?
- nameerror Python NameError: имя не определено
- nameerror Путаница с операцией присваивания внутри ложного блока if
- nameerror Почему я получаю NameError: имя 'array' не определено
- nameerror python NameError: глобальное имя '__file__' не определено