Schleife will nicht so wie ich

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.
Antworten
AlGee
User
Beiträge: 4
Registriert: Montag 4. März 2019, 14:27

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)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
AlGee
User
Beiträge: 4
Registriert: Montag 4. März 2019, 14:27

Das habe ich alles schon in Pycharm gemacht - ohne Lernerfolg.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

"Vermutungen" kann man übrigens in der Programmierung recht schnell in Gewissheit verwandeln - indem man nachschaut.
AlGee
User
Beiträge: 4
Registriert: Montag 4. März 2019, 14:27

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.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

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))
AlGee
User
Beiträge: 4
Registriert: Montag 4. März 2019, 14:27

Danke für den Tip.
Antworten