Python min. und max. mit For schleife?
Hallo!
Ich habe, für meine Informatik Hausaufgabe, eine Liste in Python eingeben müssen. Jetzt muss ich aber, mithilfe einer for-Schleife(!!!), den Maximum und Minimumwert ausfindig machen. Ich stehe gerade etwas auf dem Schlauch und weis nicht wie das gehen soll... (ohne array wenn möglich)
Vielen Dank!!!
Das hab ich bis jetzt. (Wenn ich aber bspw. ganz normal die Zahlen von 1-10 eingeben lasse, wird mir als Maximum 9 ausgegeben)
@KarlRanseierIII , Bei mir sieht es gerade so aus, und funktioniert nur in 50% der Fälle
5 Antworten
Sinnvollerweise solltest Du Deine Zahlen auch zu ints konvertieren, andernfalls könnte das Ergebnis Deines Vergleiches unerwartet ausfallen ;-).
Deine Schleife änderst Du sinnvollerweise wie folgt ab:
max=Zahlenliste[0]
for Zahl in Zahlenliste[1:]:
if Zahl>max:
max=Zahl
Warum?
Für den Fall, daß Du nur negative Zahlen in der Liste hast, bestimmst Du sonst ein falsches Maximum. Deswegen initialisiere max auf den ersten Wert überhaupt und durchsuche die restlichen, ob ein größerer vorhanden ist. Mit min geht das dann analog.
>>> l=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> max=l[0]
>>> max
1
>>> for zahl in l[1:]:
... if zahl>max:
... max=zahl
...
>>> max
10
Hast Du den Hinweis mit dem Datentyp verstanden?
ich habe meinen weg mal als ergänzung zur Frage angepinnt. (ging hier in den Kopmmentaren nicht)
Wenn Dein Iterator i heißt, dann sollte da auch max=i stehen und nicht max=Zahl.
achso, ja ich hatte i vorher auf zahl und es hat auch nicht geklappt
da gibt er mir irgendwie einen fehler an; expected an indented block. Dabei Zeigt der kleine pfeil auf das l von Zahl aus der letzten Zeile
Es reicht wohl, das Prinzip zu verdeutlichen:
Angenommen, du würfelst n-Mal und sollst dir dabei den bisher größten gewürfelten Wert merken.
- Wurf 1 ist vielleicht eine 3. Also merkst du dir die Zahl, schreibst sie womöglich irgendwo auf.
- Wurf 2 ist vielleicht eine 1. Du liest die von dir notierte Zahl (3) und vergleichst sie mit der 1. Ist sie kleiner? Nein, ich denke nicht. Also weiter gehts.
- Wurf 3 ist vielleicht eine 6. Du liest die von dir notierte Zahl (3) und vergleichst sie mit der 6. Ist sie kleiner? Ja. Also streichst du sie durch und überschreibst sie mit dem neuen Wert (6).
- Das kann folgend noch ewig so weitergehen.
Dieses Verfahren lässt sich ebenso für den umgekehrten Fall (Minimum finden) adaptieren.
liste = [1,2,76,10,98,0,4]
# 1. Methode min() und max verwenden (dürft ihr wahrscheinlich nicht)
print(max(liste))
print(min(liste))
# 2. Methode mit for-Schleife
minimum = liste[0]
maximum = liste[0]
for i in liste:
if i>maximum:
maximum = i
if i<minimum:
minimum = i
print(maximum)
print(minimum)
naja so wie du das auf einen zettel auch machst .
du nimmst 2 felder , eins für minimum eins für maximum
dann nimmst du nach und nach eine zahl
vergleichst die , ist sie kleienr als minimum , ist es das neue minimum
ist sie größer als maxmimum ist es das neue maximum
und so gehst die ganze liste durch
am ende hast du dann minimum und maxmum in deinen feldern :)
Maximum und Minimumwert von was?
hey, bei mir funktioniert es leider auch so nicht. Ich bekomme bei einer Liste [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] als maximum nämlich die Zahl 9. Wie schaff ich es, dass die for schleife noch einen Durchgang macht??