Python min. und max. mit For schleife?


17.03.2021, 19:52

Das hab ich bis jetzt. (Wenn ich aber bspw. ganz normal die Zahlen von 1-10 eingeben lasse, wird mir als Maximum 9 ausgegeben)


17.03.2021, 22:35

@KarlRanseierIII , Bei mir sieht es gerade so aus, und funktioniert nur in 50% der Fälle

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

TaubenGuru69420 
Fragesteller
 17.03.2021, 20:39

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

0
TaubenGuru69420 
Fragesteller
 17.03.2021, 21:39

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??

0
KarlRanseierIII  17.03.2021, 22:18
@TaubenGuru69420
>>> 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?

0
TaubenGuru69420 
Fragesteller
 17.03.2021, 22:36
@KarlRanseierIII

ich habe meinen weg mal als ergänzung zur Frage angepinnt. (ging hier in den Kopmmentaren nicht)

0

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)
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

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?

Woher ich das weiß:Studium / Ausbildung – Informatikstudent