Ich verzweifele (Python)Anfänger

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

Ich brauche Hilfe!
ist die erste sache an der ich dermaßen festhänge.
Ist eine Open HPI Aufgabe und sitze heute wieder seit 6 Stunden daran.
Ich bitte euch um die Lösung oder ein beispiel wie ich es machen kann.
P.s ich sitze seit 2 Wochen an dieser Aufgabe und habe tausend verschiedene Dinge ausprobiert.
daher kein Beispiel.

Hier die Aufgabe ich wäre super happy wenn mir da mal jemand weiterhelfen kann. :)
Schreibe ein Programm, das die kleinste und die größte Zahl in einer Liste namens Zahlen ausgibt, zum Beispiel in der Form

Die kleinste Zahl ist 10 und die größte Zahl ist 97.
Du musst aber nicht unbedingt einen ganzen Satz ausgeben.</p>

Die Liste erhältst Du mit

from daten import Zahlen
Hinweis: Neben einer Schleife musst Du hier auch if-Anweisungen einsetzen.

Hinweis: Zahlen können auch negativ sein.

Hinweis: Zum Ausprobieren kannst Du zunächst mit festen Werten arbeiten, zum Beispiel

Zahlen = [41, 25, 40, 97, 76, 40, 43, 10]
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Benny90: Ich vermute mal da ``if`` benutzt werden sollen dürfen nicht die `min()`- und `max()`-Funktionen verwendet werden‽

Wo ist denn jetzt das konkrete Problem? Kannst Du denn sagen welches die kleinste und die grösste Zahl in der Liste ist? Wie machst Du das? Wenn Du das Schritt für Schritt beschreiben kannst, dann hast Du doch im Grunde schon fast das Programm dafür.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
henridoh
User
Beiträge: 12
Registriert: Mittwoch 4. April 2018, 21:35

Benutz zwei for-schleifen eine für kleiner, die andere für größer und teste ob der jetztiger wert größer/kleiner als der vorherige Min/Max wert ist
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

__blackjack__ hat geschrieben: Mittwoch 18. Juli 2018, 15:41 @Benny90: Ich vermute mal da ``if`` benutzt werden sollen dürfen nicht die `min()`- und `max()`-Funktionen verwendet werden‽

Wo ist denn jetzt das konkrete Problem? Kannst Du denn sagen welches die kleinste und die grösste Zahl in der Liste ist? Wie machst Du das? Wenn Du das Schritt für Schritt beschreiben kannst, dann hast Du doch im Grunde schon fast das Programm dafür.
Also ich schreibe das mal auf danke für die Tips. ;-)
min () max() darf nicht verwendet werden.

Liste[36, 45, -13, 6]
for i in Liste:
if i <= Liste <<-- Das geht leider nicht.Ich dachte das es dann die komplette Liste abgleicht.

for i in Liste:
if i <= Liste[0, 1, 2, 3] <<-- Das Leider auch nicht

for i in Liste:
if i < Liste[1], Liste[2], Liste[3], Liste[0]

glaube mein prob ist wie ich die einzelnen Werte aus der Liste abgleiche.
Das Ding ist das sich die liste jedes mal ändert ich kenne später die Werte nicht.
Die Länge der Liste variiert ebenfalls.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Die komplette Liste kannst Du mit min/max abgleichen, was Du ja nicht darfst, sondern Du mußt jedes einzelne Element nacheinander vergleichen (dafür ist ja die for-Schleife da), mit was, das ist dann noch die kleine Hürde.

@henridoh: die kleinste und größte Zahl kann man in einer Schleife ermitteln, da braucht man keine zwei.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Code: Alles auswählen

groesste_zahl = kleinste_zahl = Zahlen[0]
for wert in Zahlen
   wenn wert grösser als groesste_zahl dann speichere wert in groesste_zahl
   wenn wert kleiner als kleinste_zahl dann speichere wert in kleinste zahl
gebe kleinste_zahl und groesste_zahl aus
kannst du damit was anfangen?
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

ThomasL hat geschrieben: Mittwoch 18. Juli 2018, 16:51

Code: Alles auswählen

groesste_zahl = kleinste_zahl = Zahlen[0]
for wert in Zahlen
   wenn wert grösser als groesste_zahl dann speichere wert in groesste_zahl
   wenn wert kleiner als kleinste_zahl dann speichere wert in kleinste zahl
gebe kleinste_zahl und groesste_zahl aus
kannst du damit was anfangen?
Leider nicht.
glaube wenn es endlich bei mir klickt hab ichs raus im mom versteh ich eher nix :(
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Benny90: Der Name `i` in Schleife für etwas anderes als einen Index zu verwenden ist verwirrend.

Noch genauer als das was ThomasL geschrieben hat, kann man es eigentlich nicht beschreiben ohne es gleich komplett in Code hin zu schreiben.

Mach Dir mal klar wie *Du* das *ohne* Computer lösen würdest. Wenn Du einen DIN A4-Zettel mit ein paar hundert Zahlen bekommst, so das man nicht auf den ersten Blick sehen kann was die grösste/kleinste Zahl auf dem Zettel ist. Wie würdest Du da Schritt für Schritt vorgehen? Was musst Du mit jeder Zahl machen und was müsstest Du Dir merken, im Kopf oder vielleicht auf einem anderen Zettel?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

__blackjack__ hat geschrieben: Mittwoch 18. Juli 2018, 17:22 @Benny90: Der Name `i` in Schleife für etwas anderes als einen Index zu verwenden ist verwirrend.

Noch genauer als das was ThomasL geschrieben hat, kann man es eigentlich nicht beschreiben ohne es gleich komplett in Code hin zu schreiben.

Mach Dir mal klar wie *Du* das *ohne* Computer lösen würdest. Wenn Du einen DIN A4-Zettel mit ein paar hundert Zahlen bekommst, so das man nicht auf den ersten Blick sehen kann was die grösste/kleinste Zahl auf dem Zettel ist. Wie würdest Du da Schritt für Schritt vorgehen? Was musst Du mit jeder Zahl machen und was müsstest Du Dir merken, im Kopf oder vielleicht auf einem anderen Zettel?
Ich gebe dir recht, ich würde zahl für zahl vergleichen.
Mit den blanken Zahlen wäre das kein Problem, die Liste die ich erhalte kenne ich allerdings nicht ebenso die Länge.
Ich bekomme allerdings einen Fehler wenn ich es so hin schreibe.

for i in Liste:
if i < Liste[0], Liste[1], Liste[2], Liste[3], Liste[4]: <<--- Hier will ich die unterschiedlichen Positionen der Liste abfragen das geht leider nicht.(Fehler)
print("{} ist die kleinste Zahl".format(i))

ich habe ebenso versucht das ganze in eine Variable zu verpacken.

a = Liste[0], Liste[1], Liste[2], Liste[3], Liste[4

for Wert in Liste:
if Wert< a:
print("{} ist die kleinste Zahl".format(i))

geht aber leider auch net. :(

das Zahl für Zahl abgeglichen werden soll ist selbstverständlich.
ich weiß nicht wie ich die Liste abgleiche die ich net kenne.
Aber danke schonmal für die Hilfe.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Dann vergleich nochmal Zeile für Zeile, was ThomasL genau geschrieben hat, mit dem, was Du versucht hast.
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

Habe ich versucht bekomme das aber nicht hin. :(
mit der ersten zeile Von Thomas L kann ich nix anfangen... leider.

Zahlen = [-150, -76, 40, 90, 7]


for Wert in Zahlen:
if Wert <= Wert:
print("kleine Zahl") <<---- bekomme nun 5 mal kleine Zahl das nützt nix. :(
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Die erste Zeile ist schon Python-Code, die Du nur kopieren brauchst.
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

Zahlen = [-150, -76, 40, 90, 7]

groesste_zahl = kleinste_zahl = Zahlen[0]
for Wert in Zahlen:
if Wert <= kleinste_zahl:
if Wert >= groesste_zahl:
print(kleinste_zahl, groesste_zahl)

ich bekomme das ------->> -150 -150

Ich verstehe das grad überhaupt nicht mehr :O
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Soweit schon mal ganz gut
Was soll denn jeweils nach den if passieren, da fehlt doch was, oder?
beachte dabei die Einrückungen bei for-schleifen und if-Abfragen
und das prüfen auf Gleichheit ist unnötig
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

ThomasL hat geschrieben: Mittwoch 18. Juli 2018, 19:13 Soweit schon mal ganz gut
Was soll denn jeweils nach den if passieren, da fehlt doch was, oder?
beachte dabei die Einrückungen bei for-schleifen und if-Abfragen
und das prüfen auf Gleichheit ist unnötig
Schon mal gut das ich scheinbar auf dem richtigen Weg bin. :D
Thomas was noch fehlen kann ist das speichern.
Ich weis absolut net wie ich das machen soll das kam im Online Kurs nicht vor.
Kannst du mir einen Tipp geben?
kann es sein das die Gleichheit von meinen Einrückungen kommt?
Habe schon mal ein Ergebnis bekommen und keine Fehlermeldung das fühlt sich schon mal gut an. :D
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

Zahlen = [-150, -76, 40, 90, 7]

groesste_zahl = kleinste_zahl = Zahlen[0]
for Wert in Zahlen:
if Wert <= kleinste_zahl and Wert >= groesste_zahl:

print(kleinste_zahl, groesste_zahl) <<<-----Wenn ich hier die Einrückung wegnehme bekomme ich wieder einen Fehler.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie man Variablen mit Werten belegt, hast Du ganz sicher schon in Deinem Online-Kurs gelernt, zumal Du das schon an zwei Stellen in Deinem Code machst.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Code: Alles auswählen

zahlen = [-150, -76, 40, 90, 7]

groesste_zahl = kleinste_zahl = Zahlen[0]

for wert in zahlen:
    if wert < kleinste_zahl:
        # was soll hier passieren wenn die Zahl die in  wert  gespeichert ist, kleiner ist als die Zahl die in  kleinste_zahl  gespeichert ist?
    if wert > groesste_zahl:
        # was soll hier passieren wenn die Zahl die in  wert  gespeichert ist, größer ist als die Zahl die in  groesste_zahl  gespeichert ist?

print(kleinste_zahl,  groesste_zahl)
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

Hilfe, ja ich weis wie man das mit den Variablen macht.
Jetzt in dem Fall stehe ich wieder auf dem Schlauch

Zahlen = [-150, -76, 40, 90, 7]
Wert = Wert < Zahlen[0], Zahlen[1], Zahlen[2], Zahlen[3], Zahlen[1]
Wert = Wert > Zahlen[0], Zahlen[1], Zahlen[2], Zahlen[3], Zahlen[1]

groesste_zahl = kleinste_zahl = Zahlen[0]
for Wert in Zahlen:
if Wert <= kleinste_zahl:
if Wert >= groesste_zahl:


print(kleinste_zahl, groesste_zahl) <<<<<<----- Fehler
Benny90
User
Beiträge: 11
Registriert: Mittwoch 18. Juli 2018, 15:23

Zahlen = [-150, -76, 40, 90, 7]

groesste_zahl = kleinste_zahl = Zahlen[0]
for Wert in Zahlen:
if Wert <= kleinste_zahl:
print(kleinste_zahl)
if Wert >= groesste_zahl:
print(groesste_zahl)



print(kleinste_zahl, groesste_zahl)

So jetzt bekomme ich 150 mal die - 150 :O
Antworten