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