Seite 1 von 1
Anfängerfrage: elif oder if
Verfasst: Sonntag 1. Dezember 2019, 15:10
von MortalWombat
Hallo,
ich beginne gerade unter Python 3.8.0 programmieren zu lernen. Ich nutze dazu das Buch Python for Teenagers.
Im Buch steht ich soll bei mehreren if´s nur ein if und dann elif nutzen. Allerdings habe ich festgestellt, dass es gar kein Unterschied macht, ob ich if oder elif nutze. Mein Code funktioniert in jedem Fall. Gibt es eine Funktion von elif, die ich noch nicht kenne oder ist es einfach überflüssig?
Vielen Dank

Re: Anfängerfrage: elif oder if
Verfasst: Sonntag 1. Dezember 2019, 15:16
von __deets__
Deine Beobachtung ist falsch. if/elif vs if/if hat einen entscheidenden Unterschied: im ersten Fall wird nach betreten eines positiven Zweiges die Verarbeitung beendet. Nicht so im zweiten Fall.
Code: Alles auswählen
zahl = 20
if zahl > 5:
print(zahl, "groesser 5!")
if zahl > 10:
print(zahl, "groesser 10!")
if zahl > 5:
print(zahl, "groesser 5!")
elif zahl > 10:
print(zahl, "groesser 10!")
Re: Anfängerfrage: elif oder if
Verfasst: Sonntag 1. Dezember 2019, 23:18
von MortalWombat
Ich glaube meine Beobachtung war richtig. Allerdings ist der Beispielcode im Buch einfach schlecht, um die Bedeutung von elif zu erklären
Danke für Deinen Beispiel Code, er verdeutlicht den Unterschied

Re: Anfängerfrage: elif oder if
Verfasst: Sonntag 1. Dezember 2019, 23:20
von __deets__
Die Beobachtung war richtig, ich hätte “Schlussfolgerung” sagen sollen. Und leider gibt es viel Ramsch da draußen was Bücher angeht. Gute kenne ich aber auch nicht, zu lange her das ich mit Python begonnen habe.
Re: Anfängerfrage: elif oder if
Verfasst: Dienstag 24. Dezember 2019, 21:54
von MortalWombat
Hallo Deets,
erstmal frohe Weihnachten. Vielleicht kannst Du mir noch mal helfen? Diesmal geht es um "continue" in Loops. Ich erkenne auch hier den Sinn nicht. Vielleicht liegt es an dem Beispiel aus meinem Buch.
das hier:
Code: Alles auswählen
for i in range(10, 0,-1):
print(i,"Mississippii!")
# When i is equal to 5, print some text, then continue with the countdown.
if i==5:
print("'Any last words, Wonder Boy?!?'")
continue
liefert das gleiche Ergebnis, wie das hier:
Code: Alles auswählen
for i in range(10, 0,-1):
print(i,"Mississippii!")
# When i is equal to 5, print some text, then continue with the countdown.
if i==5:
print("'Any last words, Wonder Boy?!?'")
Sieht in jedem Fall so aus:
10 Mississippii!
9 Mississippii!
8 Mississippii!
7 Mississippii!
6 Mississippii!
5 Mississippii!
'Any last words, Wonder Boy?!?'
4 Mississippii!
3 Mississippii!
2 Mississippii!
1 Mississippii!
Viele Grüße
Wombat
Re: Anfängerfrage: elif oder if
Verfasst: Dienstag 24. Dezember 2019, 22:02
von sparrow
continue startet den nächsten Schleifendurchlauf.
Wenn es der letzte Befehl in der Schleife ist, wie bei dir, dann hat es keinen Effekt.
Re: Anfängerfrage: elif oder if
Verfasst: Dienstag 24. Dezember 2019, 22:26
von MortalWombat
Cool, danke für die schnelle Hilfe, ich denke ich lege das Buch mal weg. Echt ärgerlich sowas.
Re: Anfängerfrage: elif oder if
Verfasst: Mittwoch 25. Dezember 2019, 00:20
von kbr
Als ich mich für Python zu interessieren begann, habe ich das Buch von Mark Lutz „Learning Python“ genutzt. Von der ersten Auflage mit ca. 300 Seiten ist es inzwischen auf etwa 1600 Seiten angewachsen. Das der Autor gerne wortreich erklärt, zeichnete sich schon früher ab. Das Buch ist aber nicht deutlich teurer geworden; Du kriegst also mehr Papier für‘s Geld

Vielleicht möchtest Du da mal reinschauen.
Re: Anfängerfrage: elif oder if
Verfasst: Mittwoch 25. Dezember 2019, 02:32
von __blackjack__
Zwischen der ersten Frage mit dem ``if``/``elif`` und der mit dem ``continue`` besteht ein IMHO nicht ganz unwichtiger Unterschied. Es gibt viele Fälle in denen ``if`` vs. ``elif`` keinen Unterschied im beobachteten Effekt haben, wo das ``elif`` aber Zeit spart weil Vergleiche die sowieso nicht wahr ergeben können nicht ausgeführt werden, und weil es auch der Dokumentation dient, dass der Leser gleich sieht das nur einer der Zweige ausgeführt wird. Ein ``continue`` an einer Stelle wo sowieso ein neuer Schleifendurchlauf ausgeführt wird, verkürzt dagegen weder die Laufzeit, noch hilft es dem Leser beim Verständnis des Codes.
Re: Anfängerfrage: elif oder if
Verfasst: Mittwoch 25. Dezember 2019, 23:51
von MortalWombat
kbr hat geschrieben: Mittwoch 25. Dezember 2019, 00:20
Als ich mich für Python zu interessieren begann, habe ich das Buch von Mark Lutz „Learning Python“ genutzt. Von der ersten Auflage mit ca. 300 Seiten ist es inzwischen auf etwa 1600 Seiten angewachsen.
Danke für den Buchtipp. Was mich etwas irritiert, ist, dass das Buch mittlerweile 6 Jahre nicht aktualisiert wurde. Kann man die Entwicklungen von 3.3 (Stand des Buchs) auf 3.8 vernachlässigen?
Re: Anfängerfrage: elif oder if
Verfasst: Mittwoch 25. Dezember 2019, 23:53
von MortalWombat
__blackjack__ hat geschrieben: Mittwoch 25. Dezember 2019, 02:32
Zwischen der ersten Frage mit dem ``if``/``elif`` und der mit dem ``continue`` besteht ein IMHO nicht ganz unwichtiger Unterschied.
Das stimmt, ich bin da irgendwie in meinem eigenen Thema etwas off topic gekommen.

Re: Anfängerfrage: elif oder if
Verfasst: Donnerstag 26. Dezember 2019, 01:09
von kbr
MortalWombat hat geschrieben: Mittwoch 25. Dezember 2019, 23:51
Danke für den Buchtipp. Was mich etwas irritiert, ist, dass das Buch mittlerweile 6 Jahre nicht aktualisiert wurde. Kann man die Entwicklungen von 3.3 (Stand des Buchs) auf 3.8 vernachlässigen?
Sicherlich fehlen dann neuere Features wie f-Strings, Dataclasses oder Assignment Expressions. Das halte ich aber für verschmerzbar. Python ist mittlerweile 30 Jahre alt und um die Sprache an sich zu lernen, halte ich das Buch von Mark Lutz nach wie vor für einen guten Begleiter.