Seite 1 von 1

Schleife will nicht so wie ich

Verfasst: Mittwoch 13. März 2019, 19:44
von AlGee
Hallo zusammen,

nachdem ich nun schon einige Tage erfolglos versucht habe, die Schleife nach meinen Wünschen zum Laufen zu bekommen, wende ich mich hoffnungsvoll an euch.
Aus einer Zahlenreihe sollen solange Gruppen zu je 10 Zahlen zufällig ausgewählt - und vor allem ausgegeben werden - bis in der Zahlenreihe noch 10 Zahlen übrig bleiben. Meine Version gibt allerdings nur eine Gruppe, vermutlich die letzte, heraus. Wo liegt mein Fehler?

Code: Alles auswählen

import random

zahlen = list(range(1, 51))
gruppe = []

while len(zahlen) >= 11:
    for x in range(0, 10):
        a = (random.choice(zahlen))
        zahlen.remove(a)  # die gewählte Zahl aus der Reihe entfernen
        gruppe.append(a)  # die gewählte Zahl an Gruppe anhängen
        if len(gruppe) == 10:
            gruppe.sort()
            print("Gruppe: ", gruppe)

zahlen.sort
print(zahlen)

Re: Schleife will nicht so wie ich

Verfasst: Mittwoch 13. März 2019, 19:48
von Sirius3
Wenn Du nicht weißt, was passiert, dann gib doch in jedem Schleifendurchgang a, zahlen und gruppe aus und versuch zu verstehen, warum die Ausgabe so aussieht.

Re: Schleife will nicht so wie ich

Verfasst: Mittwoch 13. März 2019, 20:49
von AlGee
Das habe ich alles schon in Pycharm gemacht - ohne Lernerfolg.

Re: Schleife will nicht so wie ich

Verfasst: Mittwoch 13. März 2019, 20:51
von __blackjack__
@AlGee: Dann zeig doch mal und sage uns welche der Ausgaben Dich dann warum überrascht. Also wo weicht die Ausgabe von dem ab was Du erwartest, und warum hast Du da etwas anderes erwartet?

Re: Schleife will nicht so wie ich

Verfasst: Mittwoch 13. März 2019, 21:24
von sparrow
"Vermutungen" kann man übrigens in der Programmierung recht schnell in Gewissheit verwandeln - indem man nachschaut.

Re: Schleife will nicht so wie ich

Verfasst: Donnerstag 14. März 2019, 08:08
von AlGee
So, nachdem ich mir den Code ausgedruckt habe, habe ich den Fehler fast sofort gefunden. Die Definition der Variablen 'Gruppe' gehört innerhalb der while-Schleife, da sie beim ersten Durchlauf die Länge von 10 erreicht, wird die erste Gruppe ausgegeben. Bei jedem weiteren Durchlauf erhöhte sich der Wert um ein Vielfaches von 10 und wurde daher nicht mehr ausgegeben. So einfach.

Re: Schleife will nicht so wie ich

Verfasst: Donnerstag 14. März 2019, 08:28
von Sirius3
Das ganze wird mit `more_itertools` zum Zweizeiler:

Code: Alles auswählen

import random
from more_itertools import chunked
numbers = list(range(1,51))
random.shuffle(numbers)
for group in chunked(numbers, 10):
    print(sorted(group))

Re: Schleife will nicht so wie ich

Verfasst: Donnerstag 14. März 2019, 21:16
von AlGee
Danke für den Tip.