Ik krijg een foutmelding bij het uitvoeren van deze code:
nameUser=input("What is your name ? ")
print (nameUser)
De foutmelding is
Traceback (meest recente oproep als laatste):
Bestand “C:/Users/DALY/Desktop/premier.py”, regel 1, in
Bestand “”, regel 1, in
NameError: naam ‘klj’ is niet gedefinieerd
Wat is er aan de hand?
Antwoord 1, autoriteit 100%
U gebruikt Python 2 waarvoor de input()
functie probeert de ingevoerde uitdrukking te evalueren. Omdat u een tekenreeks invoert, behandelt Python deze als een naam en probeert deze te evalueren. Als er geen variabele is gedefinieerd met die naam, krijgt u een uitzondering NameError
.
Om het probleem op te lossen, kun je in Python 2 gebruiken raw_input()
. Dit retourneert de tekenreeksdie door de gebruiker is ingevoerd en probeert deze niet te evalueren.
Merk op dat als je Python 3 gebruikte, input()
zich hetzelfde gedraagt als raw_input()
in Python 2.
Antwoord 2, autoriteit 75%
In Python2 wordt input
geëvalueerd, input()
is gelijk aan eval(raw_input())
. Wanneer je klj invoert, probeert Python die naam te evalueren en geeft een foutmelding omdat die naam niet is gedefinieerd.
Gebruik raw_input
om een string van de gebruiker in Python2 te krijgen.
Demo 1: klj
is niet gedefinieerd:
>>> input()
klj
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'klj' is not defined
Demo 2: klj
is gedefinieerd:
>>> klj = 'hi'
>>> input()
klj
'hi'
Demo 3: een string krijgen met raw_input
:
>>> raw_input()
klj
'klj'