input():“NameError:名称'n'未定义”
好的,所以我正在写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编译器运行它,我select"n"
,我得到一个错误说:
“NameError:名称'n'未定义”
当我select"y"
我得到另一个NameError
, 'y'
是问题,但是当我做其他事情时,代码正常运行。
任何帮助是极大的赞赏,
谢谢。
在Python 2中使用raw_input
来获得一个string,Python 2中的input
等同于eval(raw_input)
。
>>> type(raw_input()) 23 <type 'str'> >>> type(input()) 12 <type 'int'>
所以,当你在input
中input
类似n
东西时,它认为你正在寻找一个名为n
的variables:
>>> 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)).
您正在Python 2上使用input()
函数 。请改用raw_input()
,或切换到Python 3。
input()
在给定的input上运行eval()
,所以inputn
被解释为python代码,寻找n
variables。 你可以通过input'n'
解决这个问题(所以用引号),但这不是一个解决scheme。
在Python 3中, raw_input()
已被重命名为input()
,完全取代了Python 2中的版本。 如果你的材料(书,课程笔记等)使用了input()
方法,那么你可能需要改用Python 3来代替。