Seite 1 von 1

While Schleife nach Beendigung neu starten

Verfasst: Mittwoch 1. Juni 2022, 19:16
von StepSical
Hallo Leute,
ich bin neu hier und probiere mich derzeit an Anfängerprojekten. Ich hatte jetzt ein Zahlenrätsel probiert, was auch soweit funktioniert, allerdings finde ich keine Lösung um die Schleife nach der Beendigung von vorne zu starten.

import random
durchgang = 0
aktiv = True
ratezahl = random.randint(0, 50)
num = 10

print("Es wird eine Zahl zwischen 0 und 50 gesucht!")
while aktiv:
durchgang = durchgang + 1
print()
print("Durchgang", durchgang)
benutzereingabe = int(input("Bitte Zahl eingeben: "))

if benutzereingabe == ratezahl:
print("Gewonnen! du hast die richtige Zahl")
aktiv = False
break
elif benutzereingabe > ratezahl:
print("deine Zahl ist zu groß!")
else:
print("deine Zahl ist zu klein!")

if durchgang == 7:
print("Schade - verloren. Versuch es nochmal")
print("Es war die Zahl " + str(ratezahl))
aktiv = False

print("Ende des Spiels")

Ich würde gerne, nachdem der Versuch zu ende ist einen neuen starten, mit einer neuen zufälligen Zahl.
Ich hoffe es gibt eine Lösung

Schonmal danke für die Hilfe :D

Re: While Schleife nach Beendigung neu starten

Verfasst: Mittwoch 1. Juni 2022, 19:51
von Sirius3
Wenn Du sowohl `break` benutzt, als auch `aktiv` auf False setzt, dann ist das zweite überflüssig.
Solche Flags sind oft unnötig, weil es ja `break` gibt.
In Deinem Fall ist aber eine Schleife über die durchläufe besser.
`num` wird definiert, aber gar nicht benutzt.

Code: Alles auswählen

import random

print("Es wird eine Zahl zwischen 0 und 50 gesucht!")
ratezahl = random.randint(0, 50)

for durchgang in range(1, 8):
    print()
    print("Durchgang", durchgang)
    benutzereingabe = int(input("Bitte Zahl eingeben: "))

    if benutzereingabe == ratezahl:
        print("Gewonnen! du hast die richtige Zahl")
        break
    elif benutzereingabe > ratezahl:
        print("deine Zahl ist zu groß!")
    else:
        print("deine Zahl ist zu klein!")
else:
    print("Schade - verloren. Versuch es nochmal")
    print(f"Es war die Zahl {ratezahl}")

print("Ende des Spiels")
Wo ist das Problem, das ganz Programm in eine weitere while-Schleife zu packen?