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'> 

所以,当你在inputinput类似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代码,寻找nvariables。 你可以通过input'n'解决这个问题(所以用引号),但这不是一个解决scheme。

在Python 3中, raw_input()已被重命名为input() ,完全取代了Python 2中的版本。 如果你的材料(书,课程笔记等)使用了input()方法,那么你可能需要改用Python 3来代替。