Skip to content

Instantly share code, notes, and snippets.

@horstjens
Last active July 2, 2025 08:16
Show Gist options
  • Save horstjens/075f40b135bef6f337cb1fd73a7c6369 to your computer and use it in GitHub Desktop.
Save horstjens/075f40b135bef6f337cb1fd73a7c6369 to your computer and use it in GitHub Desktop.
paul zahlenraten 5
import time
import random
class Game:
untergrenze = 1
obergrenze = 100
def frage_nach_zahl(prompt="Bitte Zahl eingeben",
untergrenze = 1,
obergrenze = 100):
"""
diese Funktion fragt so lange den User nach einer Zahl,
bis er eine Zahl eingibt welche den gewünschten Kriterien entspricht.
Diese Zahl wird dann zurückgeliefert. (int)
"""
while True:
antwort = input(prompt) # das ist ein String !
try:
zahl = int(antwort) # zahl ist jetzt ein integer
except ValueError:
print("Bitte nur Zahlen eingeben")
continue
if untergrenze <= zahl <= obergrenze:
return zahl
print(f"Zahl muss zwischen {untergrenze} und {obergrenze} liegen")
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("1 ........ Schwierigkeitsgrad wählen")
print("2 ........ spielen")
print("3 ........ Highscoreliste")
print("4 ........ Aufhören")
return frage_nach_zahl(prompt= "Ihre Auswahl >>>",
untergrenze=1,
obergrenze=4)
def schwierigkeit():
Game.untergrenze = 1
Game.obergrenze = frage_nach_zahl(prompt = "Bitte Obergrenze eingeben",
untergrenze=1,
obergrenze=1000000000000000000000000)
def spiel():
start = time.time()
versuch = 1
unten = Game.untergrenze
oben = Game.obergrenze
geheimzahl = random.randint(Game.untergrenze, Game.obergrenze)
while True:
zahl = frage_nach_zahl(prompt = f"Errate meine Zahl ({unten}-{oben}) >>>",
untergrenze=unten,
obergrenze=oben)
if zahl == geheimzahl:
print("bravo, richtig")
break
elif zahl < geheimzahl:
print("zu klein")
unten = zahl
elif zahl > geheimzahl:
print("zu groß")
oben = zahl
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:.2f}, von: {Game.untergrenze}, bis: {Game.obergrenze}\n")
# --------- main -----
name = input("Gib deinen Namen ein: >>>")
while True:
auswahl = hauptmenü()
if auswahl == 1:
schwierigkeit()
if auswahl == 2:
spiel()
if auswahl == 3:
try:
with open("highscore.txt") as myfile:
for line in myfile.readlines():
print(line)
except FileNotFoundError:
print("es gibt noch keine highscoreliste")
if auswahl == 4:
break
print("------- bye bye -------")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment