Liste 3x Wiederholen
- __blackjack__
- User
- Beiträge: 13071
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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.__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.
[6, 2, 2, 3, 4, 5] <- nicht möglich
[1,2,3,4,5,6] [1,2,3,4,5,6] <- möglich
Code: Alles auswählen
for _ in range(3):
print(ziehe_lottozahlen())
Also ich hab jetzt mal komplett von vorne angefangen:
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:(((((
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()
mit If ?? Diese Aufgabe zerstört mich grade:(((((
Das hier ist falsch:
Code: Alles auswählen
for num in zufaelligezahlen:
if num == zufaelligezahlen:
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]__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".
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...
was müsste sonst da Stehen? Weil so gibt er mir ja 3 Listen mit jeweils 6 Zahlen aus.kbr hat geschrieben: ↑Donnerstag 20. Januar 2022, 10:29 Das hier ist falsch:
Code: Alles auswählen
for num in zufaelligezahlen: if num == zufaelligezahlen:
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...__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?
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
Du hattest folgenden Code:
Steck das in eine Funktion bedeutet:
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`.
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)
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()
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`.
Sirius3 hat geschrieben: ↑Donnerstag 20. Januar 2022, 11:47 Du hattest folgenden Code:Steck das in eine Funktion bedeutet: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)
Und jetzt die Funktion drei mal aufrufen, ist wieder Deine Aufgabe.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()
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
Sirius3 hat geschrieben: ↑Donnerstag 20. Januar 2022, 11:47 Du hattest folgenden Code:Steck das in eine Funktion bedeutet: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)
Und jetzt die Funktion drei mal aufrufen, ist wieder Deine Aufgabe.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()
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()
@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.
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()
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
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]
In specifications, Murphy's Law supersedes Ohm's.
- __blackjack__
- User
- Beiträge: 13071
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman