Skip to content

Instantly share code, notes, and snippets.

@horstjens
Last active July 1, 2025 08:33
Show Gist options
  • Save horstjens/1eb3b89086cd27a1ba5e5e7e8cd1dc9e to your computer and use it in GitHub Desktop.
Save horstjens/1eb3b89086cd27a1ba5e5e7e8cd1dc9e to your computer and use it in GitHub Desktop.
zahlenraten_paul
import time
import random
class Game:
untergrenze = 1
obergrenze = 100
def hauptmenü():
print("------------------------------------")
print("------- zahlenratenspiel -----------")
print(f"Errate Zahlen von {Game.untergrenze} bis {Game.obergrenze} ")
print("bitte Menüpunkt wählen und ENTER drücken:")
print("a ........ Schwierigkeitsgrad wählen")
print("b ........ spielen")
print("c ........ Highscoreliste")
print("d ........ Aufhören")
while True:
eingabe = input(">>>").lower().strip()[0]
if eingabe not in ("a","b","c","d"):
print("ungültige Eingabe")
continue
return eingabe
def schwierigkeit():
while True:
print("negative Zahlen für Untergrenze erlauben ? (j/n)")
antwort = input(">>>").lower().strip()[0]
if antwort not in "jn":
continue
break
while True:
print("bitte eine positive Zahl für Obergrenze eingeben:")
eingabe = input(">>>")
try:
zahl = int(eingabe)
except ValueError:
print("das war keine Zahl")
continue
if zahl < 0:
print("Zahl muss größer als 0 sein")
continue
break
Game.obergrenze = zahl
if antwort == "j":
Game.untergrenze = -zahl
else:
Game.untergrenze = 0
def ist_zahl_vernünftig(zahl):
"""
liefert True wenn die Zahl vernünftig ist (> 0 etc.)
ansonsten liefert False
"""
#if zahl < 0:
# return False
#if zahl > 1000:
# return False
#return True
if Game.untergrenze <= zahl <= Game.obergrenze:
return True
return False
def spiel():
start = time.time()
versuch = 1
geheimzahl = random.randint(Game.untergrenze, Game.obergrenze)
print(f"errate meine Zahl ({Game.untergrenze}-{Game.obergrenze})")
while True:
eingabe = input(f"versuch: {versuch} zahl: >>>")
try:
zahl = int(eingabe)
except ValueError:
print("Bitte nur zahlen eingeben")
continue
# wir wissen, zahl ist eine zahl (und kein String)
# aber: ist die Zahl vernünftig (z.b. > 0) ?
if not ist_zahl_vernünftig(zahl):
print(f"bitte nur Zahlen eingeben zwischen {Game.untergrenze} und {Game.obergrenze}")
continue
if zahl == geheimzahl:
print("bravo, richtig")
break
elif zahl < geheimzahl:
print("zu klein")
elif zahl > geheimzahl:
print("zu groß")
versuch += 1
print("Game Over")
ende = time.time()
dauer = ende - start # in Sekunden
print(f"Spieldauer: {dauer:.2f} Sekunden")
with open("highscore.txt", "a") as myfile:
myfile.write(f"Name: {name}, Versuche: {versuch}, Zeit: {dauer}, von: {Game.untergrenze}, bis: {Game.obergrenze}\n")
# --------- main -----
name = input("Gib deinen Namen ein: >>>")
while True:
auswahl = hauptmenü()
if auswahl == "a":
schwierigkeit()
if auswahl == "b":
spiel()
if auswahl == "c":
try:
with open("highscore.txt") as myfile:
for line in myfile.readlines():
print(line)
except FileNotFoundError:
print("es gibt noch keine highscoreliste")
if auswahl == "d":
break
print("------- bye bye -------")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment