Seite 1 von 1
Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 15:32
von Marius82
Hallo, ich bin Neuling und arbeite grad ein Tutorial in Python durch, jetzt taucht folgendes Problem auf: Ein Fehler tritt auf, obwohl ich genau diesen Fehler mit "except" abfangen will.
Mein Code:
Code: Alles auswählen
#Zufallsgenerator
import random
random.seed()
#Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print 'Die Aufgabe: ', a, '+', b
#Schleife und Anzahl Versuche initialisieren
zahl = c + 1
versuch = 0
#Schleife mit while
while zahl != c:
#Anzahl Versuche
versuch = versuch + 1
#Eingabe
print 'Bitte Zahl eingeben: '
z = input()
#Versuch einer Umwandlung
try:
zahl = int(z)
except:
#Falls Umwandlung nicht erfolgreich
print 'Sie haben keine Zahl eingegeben!'
#Schleife unmittelbar fortsetzen
continue
#Verzweigung
if zahl == c:
print zahl, 'ist richtig'
else:
print zahl, 'ist falsch'
#Anzahl Versuche
print 'Ergebnis: ', c
print 'Anzahl Versuche: ', versuch
Re: Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 15:40
von deets
Schoen. Und jetzt noch den Fehler, der auftritt, bitte...
Re: Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 16:00
von snafu
Am Besten den Traceback (also die komplette Fehlerausgabe). Bei der bloßen Frage nach dem Fehler habe ich insbesondere nach dem Eingangsbeitrag so meine Befürchtungen...
Re: Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 17:36
von Hyperion
`input` zusammen mit `print` als Statement lassen böses erahnen...

Programmierst Du für Python2 oder 3? Das wäre schon einmal wichtig zu wissen - ich vermute mal 2.x, da der Code sonst gar nicht richtig anliefe.
Des Weiteren verwende doch bitte die speziellen Code-Tags für Python: [ code=python ] ... [ /code ] (ohne die Leerzeichen natürlich).
Re: Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 17:55
von Marius82
Ich benutze 2.7
Hier der Fehler:
Traceback (most recent call last):
File "C:/Python27/wer", line 22, in <module>
z = input()
File "<string>", line 1
13r
^
SyntaxError: unexpected EOF while parsing
Warum der Fehler entsteht ist mir schon klar, weil ich keine Zahl eingegeben hab sondern ein Buchstabe- aber genau diesen Fehler will ich ja durch "except" abfangen...
Re: Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 18:01
von EyDu
input wertet die Eingabe als Python-Code aus. Da "13r" kein gültiges Python ist, gibt es auch einen Fehler. Du möchtest hier raw_input verwenden. Ansonsten ist deine Idee mit dem try-except schon richtig, allerdings solltest du nur ValueErros abfangen und nicht alle. Sonst baust du dir mehr Fehler ein als du löst.
Re: Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 19:14
von BlackJack
@Marius82: Mal so nebenbei: Der `random.seed()`-Aufruf ist überflüssig.
Re: Abbruch bei Fehler mit try und except
Verfasst: Dienstag 28. August 2012, 20:29
von Marius82
Danke, jetzt gehts! Jetzt sieht mein Code so aus:
Code: Alles auswählen
#Zufallsgenerator
import random
#Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print 'Die Aufgabe: ', a, '+', b
#Schleife und Anzahl Versuche initialisieren
zahl = c + 1
versuch = 0
#Schleife mit while
while zahl != c:
#Anzahl Versuche
versuch = versuch + 1
#Eingabe
print 'Bitte Zahl eingeben: '
try:
z = raw_input()
#Versuch einer Umwandlung
zahl = int(z)
except ValueError:
#Falls Umwandlung nicht erfolgreich
print 'Sie haben keine Zahl eingegeben!'
#Schleife unmittelbar fortsetzen
continue
#Verzweigung
if zahl == c:
print zahl, 'ist richtig'
else:
print zahl, 'ist falsch'
#Anzahl Versuche
print 'Ergebnis: ', c
print 'Anzahl Versuche: ', versuch