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.
@Sirius3
Oh das war mir nicht benwusst mit den Fromat strings, bin noch blutiger Anfänger.
Wenn ich das mit den Format strings machen muss ich da immer vorne dran das kleine f schreiben?
Das mit der while-True-Schleife und der Schleife für das Programmende war ein guter Hinweis, dankeschön.
Nur wenn ich das jetzt so mache und zweimal nicht N oder J eingebe dann starte das Programm trotzdem. o-O
import random
while True:
LOWER_BOUND = 0
UPPER_BOUND = 100
secret_Number = random.randint(LOWER_BOUND, UPPER_BOUND)
print(secret_Number)
print()
print("Glückspiel Zahlen raten")
print()
print(f"Es wurde soeben eine Zufallszahl zwischen {LOWER_BOUND} und {UPPER_BOUND} generiert.")
print("Deine Aufgabe ist es, zu erraten welche Zahl es ist.")
print("Viel Erfolg!")
print()
count = 1
while True:
guess = int(input(f"Wähle eine Ganzzahl zwischen {LOWER_BOUND} und {UPPER_BOUND}: "))
if guess == secret_Number:
print("Yeahhh, das ist korrekt.")
break
elif guess < secret_Number:
print(" Die gesuchte Zahl ist größer als deine geratene Zahl!")
else:
print("Die gesucht Zahl ist kleiner als deine geratene Zahl!")
count = count +1
print(f"Du hast {count} Versuche benötigt um die korrekte Zahl zu erraten!")
print()
c= input("Wollen Sie das Programm beenden? (J/N): ")
if c == "J":
break
elif c == "N":
print()
elif c != "J" or "N":
print("Da ist eine Falsche Eingabe!")
c= input("Wollen Sie das Programm beenden? (J/N): ")
Wenn man etwas öfter machen möchte, dann braucht man eine Schleife.
`c != "J" or "N"` ist nicht das, was Du denkst, das ist ein (c != "J") or ("N"), wobei ersters in Deinem Fall zu True ausgewertet wird, zweiteres immer wie True behandelt wird. Also steht da effektiv `True or True`, man sollte hier auch sonst statt elif else benutzen.
Aber wie schon geschrieben, hier fehlt eine Schleife.
c= input("Wollen Sie das Programm beenden? (J/N): ")
if c == "J":
break
while True:
if c == "N":
print()
break
else:
print("Da ist eine Falsche Eingabe!")
c= input("Wollen Sie das Programm beenden? (J/N): ")
c= input("Wollen Sie das Programm beenden? (J/N): ")
while True:
if c == "J":
break
elif c == "N":
print()
break
else:
c != "N"
print("Da ist eine Falsche Eingabe!")
c= input("Wollen Sie das Programm beenden? (J/N): ")
if c == "J":
break
Warum ziehst du den Input-Teil nicht direkt hinter das while? Auch wird bei der Behandlung der höherliegende Code nicht erfahren, was nun gewählt wurde. Außer du löst das innerhalb einer großen Funktion, wo auf den Wert von "c" weiterhin zugegriffen werden kann.
ok also wäre das ganz so jetzt richitg?
Um meine erste While -True-Schleife zu stoppen mus sich das if == "J": break nochmal eingeben?
gibts da eine elegantere Lösung?
import random
while True:
LOWER_BOUND = 0
UPPER_BOUND = 100
secret_Number = random.randint(LOWER_BOUND, UPPER_BOUND)
print(secret_Number)
print()
print("Glückspiel Zahlen raten")
print()
print(f"Es wurde soeben eine Zufallszahl zwischen {LOWER_BOUND} und {UPPER_BOUND} generiert.")
print("Deine Aufgabe ist es, zu erraten welche Zahl es ist.")
print("Viel Erfolg!")
print()
count = 1
while True:
guess = int(input(f"Wähle eine Ganzzahl zwischen {LOWER_BOUND} und {UPPER_BOUND}: "))
if guess == secret_Number:
print("Yeahhh, das ist korrekt.")
break
elif guess < secret_Number:
print(" Die gesuchte Zahl ist größer als deine geratene Zahl!")
else:
print("Die gesucht Zahl ist kleiner als deine geratene Zahl!")
count = count +1
print(f"Du hast {count} Versuche benötigt um die korrekte Zahl zu erraten!")
print()
while True:
c = input("Wollen Sie das Programm beenden? (J/N): ")
if c in ["J", "N"]:
break
print("Da ist eine falsche Eingabe!")
if c == "J":
break
Alleine eine Funktion für das Hauptprogramm würde schon das mit dem doppelten ``break`` unnötig machen, weil man diese Funktion dann mit ``return`` verlassen könnte, wo im Moment nur die innere Schleife mit ``break`` verlassen wird.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis