Ergebnis schwankt?

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
Sarius
User
Beiträge: 20
Registriert: Dienstag 5. Juni 2018, 18:32

Hallo,
dieser Code hier sollte eigentlich zufällige Wörter aus der Datei ausgeben mit dem zugehörigen richtigen Wort.
Jedoch ist manchmal die Länge der Liste zu wenig, in diesem Fall sollte sich der Vorgang eigentlich neustarten. Aber aus irgendeinen Grund scheint es nicht zu funktionieren, kann mir jemand erklären wieso?

Code: Alles auswählen

def GetWords():
    try:
        file = open("enable1.txt")
    except:
        print("Error, file could'nt be opened.")
        sys.exit()
        
    rounds = 0
    words = []

    word_lenght = random.randint(4, 15)

    every_line = file.read().splitlines()
    file.close()
    
    while rounds != 75 and len(words) != 15:
        
        line = random.choice(every_line)

        if len(line) == word_lenght:
            words.append(line)
        else:
            rounds += 1
    
    if len(words) < 5:
        GetWords()

    real_word = random.choice(words)
    
    return words, real_word
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sarius: Schreib das erst mal ohne die Rekursion und ohne die sinnfreie Ausnahmebehandlung, vorher macht das keinen Sinn sich das anzuschauen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sarius
User
Beiträge: 20
Registriert: Dienstag 5. Juni 2018, 18:32

__blackjack__ hat geschrieben: Samstag 14. März 2020, 11:20 @Sarius: Schreib das erst mal ohne die Rekursion und ohne die sinnfreie Ausnahmebehandlung, vorher macht das keinen Sinn sich das anzuschauen.
Könntest du erklären was du damit meinst? Die Ausnahmebehandlung braucht man doch wenn die Liste zu wenig Wörter beinhaltet, oder nicht?
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Dir ist klar, dass die Rekursion nichts bringt, weil du nichts mit dem Rückgabewert machst?
Einfacher wäre es, wenn Du erst alle Wörter mit der richtigen Länge herausfilterst und dann mit random.sample die gewünschte Anzahl nimmst.

lenght <> length
Sarius
User
Beiträge: 20
Registriert: Dienstag 5. Juni 2018, 18:32

Sirius3 hat geschrieben: Samstag 14. März 2020, 11:30 Dir ist klar, dass die Rekursion nichts bringt, weil du nichts mit dem Rückgabewert machst?
Einfacher wäre es, wenn Du erst alle Wörter mit der richtigen Länge herausfilterst und dann mit random.sample die gewünschte Anzahl nimmst.

lenght <> length
War mir nicht klar, danke!
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Sarius hat geschrieben: Samstag 14. März 2020, 11:29 Könntest du erklären was du damit meinst? Die Ausnahmebehandlung braucht man doch wenn die Liste zu wenig Wörter beinhaltet, oder nicht?
Ich sehe nur beim Öffnen der Datei eine Ausnahmebehandlung (try-except-Statement) die dafür sorgt, dass eine statische Fehlermeldung ausgegeben und das Skript beendet wird. Das passiert aber doch sowieso. Nur dafür braucht man streng genommen kein try-except.
Sarius
User
Beiträge: 20
Registriert: Dienstag 5. Juni 2018, 18:32

nezzcarth hat geschrieben: Samstag 14. März 2020, 12:12
Sarius hat geschrieben: Samstag 14. März 2020, 11:29 Könntest du erklären was du damit meinst? Die Ausnahmebehandlung braucht man doch wenn die Liste zu wenig Wörter beinhaltet, oder nicht?
Ich sehe nur beim Öffnen der Datei eine Ausnahmebehandlung (try-except-Statement) die dafür sorgt, dass eine statische Fehlermeldung ausgegeben und das Skript beendet wird. Das passiert aber doch sowieso. Nur dafür braucht man streng genommen kein try-except.
Oh, das stimmt. Ich dachte etwas anderes wäre gemeint. Danke
Antworten