Seite 1 von 2
Re: Liste 3x Wiederholen
Verfasst: Mittwoch 19. Januar 2022, 14:42
von __blackjack__
@Sülo: Beim letzten Satz hatte ich Dich anders verstanden, und zwar bei einer Antwort wo Ich explizit nachgefragt hatte welche der beiden Varianten gesucht ist.
Meine Frage war „[…] sollen die 3×6=18 Zahlen dann auch alle unterschiedlich sein, oder reicht es wenn die innerhalb der jeweiligen Ziehung unterschiedlich sind?“
Und geantwortet hattest Du „J also die Zahlen sollen sich in den 3 Listen (18 Zahlen) nicht doppeln.“
Vielleicht mein Fehler, dass ich bei „J(a?)“ auf eine entweder/oder Frage nicht noch mal nachgehakt habe.

Ich hatte die Angabe von den 18 Zahlen in Verbindung mit nicht doppeln dann halt auf diese 18 Zahlen bezogen verstanden.
Re: Liste 3x Wiederholen
Verfasst: Mittwoch 19. Januar 2022, 15:03
von Sülo
__blackjack__ hat geschrieben: Mittwoch 19. Januar 2022, 14:42
@Sülo: Beim letzten Satz hatte ich Dich anders verstanden, und zwar bei einer Antwort wo Ich explizit nachgefragt hatte welche der beiden Varianten gesucht ist.
Meine Frage war „[…] sollen die 3×6=18 Zahlen dann auch alle unterschiedlich sein, oder reicht es wenn die innerhalb der jeweiligen Ziehung unterschiedlich sind?“
Und geantwortet hattest Du „J also die Zahlen sollen sich in den 3 Listen (18 Zahlen) nicht doppeln.“
Vielleicht mein Fehler, dass ich bei „J(a?)“ auf eine entweder/oder Frage nicht noch mal nachgehakt habe.

Ich hatte die Angabe von den 18 Zahlen in Verbindung mit nicht doppeln dann halt auf diese 18 Zahlen bezogen verstanden.
Nein Nein das war mein Fehler, ich dachte auch das die Zahlen in den 3 Listen sich nicht wiederholen sollten bis der Prof. gesagt hat das es egal sei und die sich doppeln können da 3 verschiedene Listen mit jeweils 6 aus 49 gezogen werden. Nur in der Liste an sich sollen sie sich nicht doppeln.
[6, 2, 2, 3, 4, 5] <- nicht möglich
[1,2,3,4,5,6] [1,2,3,4,5,6] <- möglich
Re: Liste 3x Wiederholen
Verfasst: Mittwoch 19. Januar 2022, 15:35
von __deets__
Dann schreib eine Funktion, die einmal die Lottozahlen zieht. Und ruf die dreimal auf.
Re: Liste 3x Wiederholen
Verfasst: Mittwoch 19. Januar 2022, 17:49
von Sülo
__deets__ hat geschrieben: Mittwoch 19. Januar 2022, 15:35
Dann schreib eine Funktion, die einmal die Lottozahlen zieht. Und ruf die dreimal auf.
Das ist es ja, wie ich die Zahlen ziehe hab ich schon aber nicht wie ich es 3x wiederholen lassen soll


Re: Liste 3x Wiederholen
Verfasst: Mittwoch 19. Januar 2022, 18:02
von __deets__
Dazu muss eben dein bestehender Code in eine Funktion ziehe_lottozahlen.
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 10:02
von Sülo
Also ich hab jetzt mal komplett von vorne angefangen:
Code: Alles auswählen
from random import randrange
anfang = 1
ende = 49
def Zahlenliste():
zufaelligezahlen = list()
while len(zufaelligezahlen) < 6:
zufaelligeZahl = randrange(anfang, ende)
repeated = False
for num in zufaelligezahlen:
if num == zufaelligezahlen:
repeated = True
if repeated == False:
zufaelligezahlen.append(zufaelligeZahl)
zufaelligezahlen.sort()
return zufaelligezahlen
def main():
Zahlenlisten = []
for i in range(3):
zufaelligezahlen = Zahlenliste()
Zahlenlisten.insert(i, zufaelligezahlen)
print(Zahlenlisten)
if __name__ == "__main__":
main()
soweit so gut, nächstes Problem wie oder bzw. was muss ich jetzt tun das die Zahlen pro liste sich nicht wiederholen?
mit If ?? Diese Aufgabe zerstört mich grade:(((((
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 10:29
von kbr
Das hier ist falsch:
Code: Alles auswählen
for num in zufaelligezahlen:
if num == zufaelligezahlen:
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 10:34
von __deets__
Haeh? Du schreibst doch oben, dass die Zahlen sich zwischen den Listen doppeln duerfen. Woher kommt nun wieder diese andere Anforderung? Ich meine das ist doch "6 aus 49" nicht "6 aus wir ziehen immer weiter bis wir keine Zahlen mehr haben und am Ende ist klar welche Kombination gewinnt & wir werden alle stinkreich".
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:13
von Sülo
__deets__ hat geschrieben: Donnerstag 20. Januar 2022, 10:34
Haeh? Du schreibst doch oben, dass die Zahlen sich zwischen den Listen doppeln duerfen. Woher kommt nun wieder diese andere Anforderung? Ich meine das ist doch "6 aus 49" nicht "6 aus wir ziehen immer weiter bis wir keine Zahlen mehr haben und am Ende ist klar welche Kombination gewinnt & wir werden alle stinkreich".
Nein Nein ich hab ja oben geschrieben in die Zahlen dürfen sich in allen 3 Listen wiederholen aber nicht in der Eigenen Also Quasi Könnte rauskommen [1,2,3,4,5,6], [1,2,3,4,5,6], [1,2,3,4,5,6]
aber es darf NICHT so sein: [1,2,3,4,4,5] [1,1,6,6,8,9].... die Wahrscheinlichkeit das es doppelt vorkommt in einer Liste ist sehr gering trotzdem möchte mein Prof die Wahrscheinlichkeit = 0 haben...
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:14
von Sülo
kbr hat geschrieben: Donnerstag 20. Januar 2022, 10:29
Das hier ist falsch:
Code: Alles auswählen
for num in zufaelligezahlen:
if num == zufaelligezahlen:
was müsste sonst da Stehen? Weil so gibt er mir ja 3 Listen mit jeweils 6 Zahlen aus.
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:17
von __deets__
Ja aber das Problem hast du doch schon in
viewtopic.php?f=1&t=53866#p400277 geloest? Jetzt geht es doch nur darum, *den* Code in eine Funktion zu packen. Warum machst du das nicht, und schreibst stattdessen neuen/anderen Code, der diese Bedingung nicht mehr erfuellt?
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:25
von Sülo
__deets__ hat geschrieben: Donnerstag 20. Januar 2022, 11:17
Ja aber das Problem hast du doch schon in
viewtopic.php?f=1&t=53866#p400277 geloest? Jetzt geht es doch nur darum, *den* Code in eine Funktion zu packen. Warum machst du das nicht, und schreibst stattdessen neuen/anderen Code, der diese Bedingung nicht mehr erfuellt?
Weil ich zu dumm bin um das in eine Funktion zu packen...

Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:26
von __deets__
Hier oben hast du es doch auch schon geschafft. Was daran ist jetzt ploetzlich so viel schwerer?
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:29
von Sülo
__deets__ hat geschrieben: Donnerstag 20. Januar 2022, 11:26
Hier oben hast du es doch auch schon geschafft. Was daran ist jetzt ploetzlich so viel schwerer?
Ich weiß es nicht das ist mein Problem manchmal mach ich einfach indes klappt sagt man mir dann aber was einfaches wie zb. Pack das in eine Funktion dann bin ich so verloren weil ich überhaupt nicht weiß wie ich was gemacht habe:D
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:47
von Sirius3
Du hattest folgenden Code:
Code: Alles auswählen
import random
zahlen = []
while len(zahlen) < 6:
zahl = random.randint(1, 49)
if zahl not in zahlen:
zahlen.append(zahl)
zahlen.sort()
print(zahlen)
Steck das in eine Funktion bedeutet:
Code: Alles auswählen
import random
def ziehe_zahlen():
zahlen = []
while len(zahlen) < 6:
zahl = random.randint(1, 49)
if zahl not in zahlen:
zahlen.append(zahl)
zahlen.sort()
return zahlen
def main():
zahlen = ziehe_zahlen()
print(zahlen)
if __name__ == "__main__":
main()
Und jetzt die Funktion drei mal aufrufen, ist wieder Deine Aufgabe.
Ansonsten gilt noch das von mir geschriebene: eingerückt wird mit 4 Leerzeichen, keine Tabs. Variablennamen und Funktionen schreibt man kompett klein.
Konstanten dagegen komplett gross: `ANFANG = 1`.
`insert` braucht man selten, hier definitiv nicht. Das ist ein `append`.
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 11:59
von Sülo
Sirius3 hat geschrieben: Donnerstag 20. Januar 2022, 11:47
Du hattest folgenden Code:
Code: Alles auswählen
import random
zahlen = []
while len(zahlen) < 6:
zahl = random.randint(1, 49)
if zahl not in zahlen:
zahlen.append(zahl)
zahlen.sort()
print(zahlen)
Steck das in eine Funktion bedeutet:
Code: Alles auswählen
import random
def ziehe_zahlen():
zahlen = []
while len(zahlen) < 6:
zahl = random.randint(1, 49)
if zahl not in zahlen:
zahlen.append(zahl)
zahlen.sort()
return zahlen
def main():
zahlen = ziehe_zahlen()
print(zahlen)
if __name__ == "__main__":
main()
Und jetzt die Funktion drei mal aufrufen, ist wieder Deine Aufgabe.
Ansonsten gilt noch das von mir geschriebene: eingerückt wird mit 4 Leerzeichen, keine Tabs. Variablennamen und Funktionen schreibt man kompett klein.
Konstanten dagegen komplett gross: `ANFANG = 1`.
`insert` braucht man selten, hier definitiv nicht. Das ist ein `append`.
Oh mein Gott ich bin echt richtig dumm





ich danke dir so sehr ok das mit dem wiederholen schaffe ich jetzt und poste das Ergebnis hier rein
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 12:12
von Sülo
Sirius3 hat geschrieben: Donnerstag 20. Januar 2022, 11:47
Du hattest folgenden Code:
Code: Alles auswählen
import random
zahlen = []
while len(zahlen) < 6:
zahl = random.randint(1, 49)
if zahl not in zahlen:
zahlen.append(zahl)
zahlen.sort()
print(zahlen)
Steck das in eine Funktion bedeutet:
Code: Alles auswählen
import random
def ziehe_zahlen():
zahlen = []
while len(zahlen) < 6:
zahl = random.randint(1, 49)
if zahl not in zahlen:
zahlen.append(zahl)
zahlen.sort()
return zahlen
def main():
zahlen = ziehe_zahlen()
print(zahlen)
if __name__ == "__main__":
main()
Und jetzt die Funktion drei mal aufrufen, ist wieder Deine Aufgabe.
Ansonsten gilt noch das von mir geschriebene: eingerückt wird mit 4 Leerzeichen, keine Tabs. Variablennamen und Funktionen schreibt man kompett klein.
Konstanten dagegen komplett gross: `ANFANG = 1`.
`insert` braucht man selten, hier definitiv nicht. Das ist ein `append`.
Jetzt Funkt es endlich:))) ich danke euch allen



hier der richtige Code:
Code: Alles auswählen
import random
def ziehe_zahlen():
zahlen = []
while len(zahlen) < 6:
zahl = random.randint(1, 49)
if zahl not in zahlen:
zahlen.append(zahl)
zahlen.sort()
return zahlen
def main():
for i in range(3):
zahlen = ziehe_zahlen()
print(zahlen)
if __name__ == "__main__":
main()
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 15:09
von rogerb
@Sülo,
kannst du zum Aufsammeln der Lottozahlen nicht ein Set statt einer Liste verwenden? Das hätte die schöne Eigenschaft, dass Duplikate beim Einfügen automatisch verworfen werden, da Sets keine Duplikate enthalten können. Die If-Abfrage würde also wegfallen. Die Funktion sorted() macht aus dem Set wieder eine sortierte Liste.
Statt append() verwendet man allerdings add() für Sets. Bei sehr großen Datenmengen würde das auch deutlich performanter sein.
Code: Alles auswählen
import random
def ziehe_zahlen():
zahlen = set()
while len(zahlen) < 6:
zahlen.add(random.randint(1, 49))
return sorted(zahlen)
def main():
for _ in range(3):
zahlen = ziehe_zahlen()
print(zahlen)
if __name__ == "__main__":
main()
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 16:43
von pillmuncher
Ich werfe mal
random.shuffle() in den Raum, da das bisher nicht explizit ausgeschlossen wurde:
Code: Alles auswählen
>>> import random
>>> items = list(range(1, 50))
>>> random.shuffle(items)
>>> sorted(items[:6])
[2, 3, 19, 21, 22, 41]
Re: Liste 3x Wiederholen
Verfasst: Donnerstag 20. Januar 2022, 16:56
von __blackjack__
Vielleicht eine interessante Zusatzaufgabe mal drüber nachzudenken unter welchen Umständen die eine oder andere Art das zu lösen besser ist. Also was die Vor- und Nachteile der beiden Varianten jeweils sind. Ist eventuell für absolute Anfänger noch ein bisschen zu hoch gegriffen und bei 6 aus 49 ist das auch ziemlich egal welche Variante man nimmt. Nur so als Idee/Anregung.
