elif-Anweisung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
acky
User
Beiträge: 11
Registriert: Dienstag 3. Juli 2007, 19:43

"Alle Bedingungen werden der Reihe nach überprüft. Wenn die erste falsch ist, wird die nächste geprüft und so weiter. Wenn eine wahre Bedingung angetroffen wird, wird der entsprechende Zweig ausgeführt und die ganze if-Anweisung beendet. Auch wenn mehr als eine Bedingung wahr ist, wird nur der erste wahre Zweig ausgeführt. "
Quelle:
http://ada.rg16.asn-wien.ac.at/~python/ ... /kap04.htm

Als Übung hab ich dann folgenden Code geschrieben:

Code: Alles auswählen

#!/usr/bin/python	

def Vergleicher2(x,y): 
	if x*2 == y:
		print x, "ist die Haelfte von", y
	if x/2 == y:
		print x, "ist das doppelte von", y
	if x > y:
		print x, " ist groesser als", y
	if x < y:
		print x, "ist kleiner als", y
	if x == y:
		print x, "ist genauso gross wie", y
	else:
		print "ungueltige Eingabe"


Wenn ich nun z.B. 10 und 5 eingebe kommt bei mir folgenedes raus:

Code: Alles auswählen

>>> Vergleicher2(10,5)
10 ist das doppelte von 5
10  ist groesser als 5
ungueltige Eingabe
Nun zur Frage: Oben steht doch eigtl. das wenn eine Bedingung wahr ist die Schleife beendet wird. Warum bekomm ich 3 Ergebnisse ? (Rein logisch sind ja alle 2 bzw.3 Ergebnisse korrekt) Hab die Funktionen von "Hälfte" und "Doppelte" extra nach vorne gesetzt. Um zu vermeiden das ich immer an der < bzw. > Geschichte hängen bleibe.

Für jede Antwort bin ich dankbar :D

acky
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

Das Problem ist eigentlich ganz einfach.
In dem "Buch" wird eine if-elif-else Verzweigung erklärt.
Du benutzt aber nur if-else.
Ich erklär's mal kurz.
So hast du das:

Code: Alles auswählen

if x == 2:
    # wird betreten wenn x == 2 ist
if x == 1:
    # wird betreten wenn x == 1 ist
else:
    # wird für alle anderen fälle von if x == 1 betreten
    # also auch für if x == 2
Und so ist es in dem Buch gemeint:

Code: Alles auswählen

if x == 2:
    # wird betreten wenn x == 2 ist
elif x > 1:
    # wird betreten wenn x > 1 ist
    # aber nur wenn der vorherige Zweig nicht betreten wurde
    # also das if x == 2
else:
    # wird für alle anderen fälle betreten
    # dh wenn die vorherigen Bedingungen nicht erfüllt wurden
Guck vielleicht mal genau hin, denn es heißt``elif``.
Wird wohl die Abkürzung für "else if" sein.
acky
User
Beiträge: 11
Registriert: Dienstag 3. Juli 2007, 19:43

Danke

acky => schämt sich dafür so einfache Fragen zustellen :oops:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Gib doch mal 3 und 1 ein ... :wink:
Antworten