Seite 1 von 1

elif-Anweisung

Verfasst: Donnerstag 3. Juli 2008, 00:51
von acky
"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

Verfasst: Donnerstag 3. Juli 2008, 01:01
von Karl
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.

Verfasst: Donnerstag 3. Juli 2008, 01:04
von acky
Danke

acky => schämt sich dafür so einfache Fragen zustellen :oops:

Verfasst: Donnerstag 3. Juli 2008, 03:51
von numerix
Gib doch mal 3 und 1 ein ... :wink: