2013-07-01 13 views
8

Ok, więc piszę kodu sprawdzającego stopień w pytona i mojego kodu jest:input(): „NameError: nazwa«n»nie jest zdefiniowana”

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." 

Kiedy uruchamiam go przez mojego pytona kompilator i wybiorę "n", pojawia się błąd mówiąc:

"NameError: name 'n' is not defined"

i kiedy wybrać "y" dostaję kolejną NameError z 'y' jest problem, ale kiedy robię coś innego, kod działa normalnie.

Każda pomoc jest mile widziana,

Dziękuję.

Odpowiedz

16

Użyj raw_input w Pythonie 2, aby uzyskać ciąg znaków, input w Pythonie 2 jest odpowiednikiem eval(raw_input).

>>> type(raw_input()) 
23 
<type 'str'> 
>>> type(input()) 
12 
<type 'int'> 

tak, kiedy wpiszesz coś takiego n w input ona myśli, że szukasz zmiennej o nazwie 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 działa prawidłowo:

>>> raw_input() 
n 
'n' 

pomoc na 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. 

pomoc na input:

>>> print input.__doc__ 
input([prompt]) -> value 

Equivalent to eval(raw_input(prompt)). 
1

Używasz input() function na Python 2. Użyj raw_input() zamiast, lub przełączyć do Pythona 3.

input() biegnie eval() na danym wejściu, tak wprowadzenie n jest interpretowane jako kod Pythona, szukając zmiennej n. Możesz obejść to, wpisując 'n' (tak w cudzysłowie), ale to nie jest rozwiązanie.

W języku Python 3, raw_input() został przemianowany na input(), zastępując wersję z Python 2 w ogóle. Jeśli twoje materiały (książka, notatki o kursach itp.) Używają input() w sposób, który oczekuje, że n zadziała, prawdopodobnie musisz przełączyć się na używanie Pythona 3.

Powiązane problemy