Python: Ein Programm schreiben, welches die größte und die kleinste Zahl ausgibt?
Wie ist dieser Code zu verstehen? Ich kapiere nicht, wie es möglich war, dass Python den größten und den kleinsten Wert unterscheiden konnte. Wie das mit der if-Bedingung funktionierte, weiß ich nicht. Hättet ihr dabei noch andere Vorschläge?
Zahlen = [100, 25, 0, 97, 76, 40, 43, 10] # Wir definieren eine Variable Liste die folgende Zahlen
klein = Zahlen[0] # wir dinieren eine Variable in der den ersten wert von einer anderen Variable steht
groß = Zahlen[0] # das gleich
for Zahl in Zahlen: # wir wiederholen die zahlen in der Variable liste (Zahlen)
if Zahl < klein: ? wenn der Wert gespeicherte Wert Zahl von Schleife größer als der Wert in Schleife klein dann
klein = Zahl # dann der Wert in Variable klein ist gleich der Wert in der Variable Zahl ?
elif Zahl > groß: ?
groß = Zahl
print("kleinste Wert:", klein)
print("größte Wert:", groß)
i
3 Antworten
Also wenn du ein Programm nicht verstehst dann kannst du dir einen Stift und ein Blatt Papier nehmen und das ganze Zeile für Zeile von Hand durchspielen und die Zwischenergebnisse aufschreiben.
In der Schleife passiert folgendes:
Zahl = 100
if 100 < 100 -> False
elif 100 > 100 -> Flase
Zahl = 25
if 25 < 100 -> True
klein = 25
elif 25 > 100 -> Da if stimmte wird das nicht mehr geprüft
Zahl = 0
if 0 < 25 -> True
klein = 0
elif 0 > 100 -> Da if stimmte wird das nicht mehr geprüft
Zahl = 97
if 97 < 0 -> False
elif 97 > 100 -> False
usw.
Alternativ dazu kannst du zB Microsoft VisualStudio Code verwenden - damit kannst du so ein Script debuggen und es Zeile für Zeile ablaufen lassen und sehen was passiert:
Ich weiß gar nicht, was ich erklären soll. das programm ist ziemlich selbsterklärend.
lass dir einfach mit innerhalb der Schleife die Werte von Zahl, klein und groß ausdrucken, dann verstehst du vielleicht, was da passiert.
print(Zahl, klein, groß)
wie das Programm mit der if Bedingung das ausgeben konnte. MFG
Kaltschmidt
Also das von dir gestellte Programm wird wohl aufgrund der gesetzten Fragezeichen kaum ausführbar sein. Vermutlich wolltest du da Kommentare (#) setzen.
Das i in der letzten Zeile solltest du ebenfalls entfernen.
Der Ablauf des Programmes ist ziemlich einfach. Es wird eine Liste an Zahlen definiert und zwei Variablen werden erstellt, die jeweils auf den Wert des ersten Listenelements zeigen.
Die Anfangsvermutung ist, dass der Wert von klein (100) die kleinste Zahl in der Liste repräsentiert und der Wert von groß (ebenso 100) den größten. Um diese Startthese zu halten, müssen alle weiteren Elemente der Liste überprüft werden, denn möglicherweise gibt es eine kleinere / größere Zahl.
Dafür wird eine Schleife (for) definiert, die sich für jede ihrer Iterationen jeweils ein Element aus der Liste nimmt und dessen Wert in der Variable Zahl ablegt.
Die Verzweifung (if-elif) nutzt die Variable folgend für mindestens eine Überprüfung. Ist die aktuelle Zahl kleiner als der Wert in klein, wird klein überschrieben. Ist die aktuelle Zahl größer als der Wert in groß, wird groß überschrieben.
Ein manueller Probelauf macht dies nochmals deutlich:
Zahl = 100
100 < klein(100) => false
100 > groß(100) => false
Zahl = 25
25 < klein(100) => true (die Variable "klein" wird überschrieben)
Zahl = 0
0 < klein(25) => true (die Variable "klein" wird überschrieben)
Zahl = 97
97 < klein(0) => false
97 > groß(100) => false
usw. ...
Oder du stellst es dir bildlich vor: Vor dir liegt ein Stapel an Spielkarten. Um die Karte mit den höchsten / kleinsten Wert zu ermitteln, nimmst du die erste Karte vom Deck und vergleichst sie nun nacheinander mit den darauffolgenden Karten. Ist eine Karte im Wert kleiner / größer, legst du sie als neue höchste / kleinste Karte beiseite. Die alten Karten (die praktisch geschlagen wurden) wandern in den Stapel der bereits geprüften Karten.
P.S.: Du solltest unbedingt an deinem Ausdruck und deiner Rechtschreibung arbeiten. Das schreibe ich nicht, um dich zu ärgern, aber die ursprüngliche Fassung der Frage war bedenklich. Die Kommentare im Code sind es z.T. immer noch.