Wie ändere ich random.choice so um, dass es mir nur einmalig angezeigt wird?

4 Antworten

Ja, du rufst die Anzeige ja auch in der forschleife auf, dann zeigt es natürlich mehrere an. Ich frage mich an dieser stelle, wozu dü überhaupt eine schleife brauchst, da random.choice eben eine zufällige ermutigung aus der liste anzeigt.

Woher ich das weiß:Studium / Ausbildung – Studium Technische Informatik
Leopold3310 
Fragesteller
 14.10.2020, 14:23

Danke. Das erklärt es :)

0
Das zeigt mir aber mehrere an. Irgendwelche Ideen, wie ich das lösen kann?

lass mich raten, ermutigung enthält auch mehr als ein Zitat?

Du hast eine for-Schleife, die über JEDES Element aus ermutigung iteriert ...Du machst zwar mit erm nichts, aber es wird trotzdem so oft aufgerufen, wie du Elemente in ermutigung hast

Leopold3310 
Fragesteller
 14.10.2020, 14:24

Das macht Sinn, danke! Jetzt sollte das behoben sein.

0

for erm in ermutigung:

Diese Zeile ist der Fehler. Wenn in ermutigung 10 Sprüche gespeichert sind, werden dir auch 10 x Sprüche angezeigt. Lässt du aber die obige Programmzeile weg, wird dir nur ein Spruch angezeigt.

Lies bitte mal nach, was eine for-Schleife ist und wie man diese benutzt.

random.choice() liefert genau ein Element aus einer Sequenz.

Die Frage ist, was "ermutigung" ist und was da genau drin ist. Ist es eine Liste von Listen von Strings?

Leopold3310 
Fragesteller
 14.10.2020, 14:22

spruch_1 = "Die Misserfolge schreibe in den Sand, die Erfolge meißle in Stein. Sprichwort"

spruch_2 = "Erfolg dauert nie ewig und Misserfolg ist nie endgültig. Mike Ditka"

spruch_3 = "Es gibt mehr Leute, die kapitulieren, als solche, die scheitern. Henry Ford"

spruch_4 = "Hier ist ein Trick: Hör auf zu jammern. Elizabeth Gilbert in Big Magic"

spruch_5 = "You will be exactly as happy as you decide to be. Unbekannt"

ermutigung = [[spruch_1],[spruch_2],[spruch_3],[spruch_4],[spruch_5]]

0
alfredo153  14.10.2020, 14:24
@Leopold3310

Das ist keine Liste von Strings, sondern eine Liste von Listen von Strings. Nur unnötig mühsam geschrieben.

Davon abgesehen: du machst eine Schleife über all diese Werte. Warum?

0
Leopold3310 
Fragesteller
 14.10.2020, 14:29
@alfredo153

Ich habe alles in einer Schleife verbaut, weil ich mit

while abbruch is ja:

  msgDlg("Du hast die Vokabelübung abgebrochen!")

  break

das Programm vor dem eigentlichen Ausführen beenden kann, falls ich möchte.

ja = 0

nein = 1

Wenn man also in das Fenster eine "0" eingibt, schließt es alles. Aber wenn ich eine "1" eingebe, führt mein Programm alles Andere aus.

Aber mein Problem mit den Zitaten hat sich jetzt erledigt. Ich hätte das Teil einfach aus der for-Schleife rausnehmen müssen.

1
sitgo93  14.10.2020, 15:25
@Leopold3310

Dann reicht doch in dem Fall
if fehler >=2:
print(random.choice(ermutigung))

0