Ja natürlich. Auto eingeben hat ja auch keinen Zweck. Daß du jetzt mit einem NameError konfrontiert bist, liegt daran, das du alle Exceptions mit "except:" schluckst. Genau deswegen wird davor gewarnt, man fängt einfach alles ab, und am Ende kommt dann sowas bei raus, zusammen mit einer nichtssagen Fehlermeldung wie "Das ist nicht korrekt."
Die Tücke umgehst du indem du
a. Entweder nicht alles mit except abfängst und die Exception den Terror verbreiten lässt (das macht man meist bei größeren Programmen, da man dort sowieso selten mit print und gar nicht mit raw_input arbeitet)
b. Den ValueError abfängt und danach die Schleife neu beginnst. Das kann du mit dem Statement "continue" machen:
Code: Alles auswählen
import random
print "Zahlenraten"
print "Versuchen Sie die vom Programm zufaellig ausgesuchte Zahl zu erraten"
print "--------------------------------------------------------------------"
secret = random.randint(1, 100)
print secret
while True:
try:
guess = int(raw_input("Bitte geben Sie eine Zahl ein: "))
except ValueError, exception:
print exception.message
continue
if guess != secret:
print "Falsch, versuchen Sie es nocheinmal"
else:
print "Richtig, Sie haben das Spiel gewonnen"
break
Zahlenraten
Versuchen Sie die vom Programm zufaellig ausgesuchte Zahl zu erraten
--------------------------------------------------------------------
59
Bitte geben Sie eine Zahl ein: auto
invalid literal for int() with base 10: 'auto'
Bitte geben Sie eine Zahl ein: bla
invalid literal for int() with base 10: 'bla'
Bitte geben Sie eine Zahl ein: 59
Richtig, Sie haben das Spiel gewonnen