Es handelt sich um einen sehr simplen Dungeon Crawler in der Kommandozeile. Dabei kann der Spieler sich entscheiden in einen bestimmten Raum zu gehen. Es gibt immer drei Räume zur Auswahl. Entsprechend brauche ich eine Eingabe durch den Benutzer, welche dann überprüft werden muss, nämlich einmal ob es überhaupt ein Integer ist bzw. in einen Integer umgewandelt werden kann und, wenn es dann ein Integer ist, dass dieser 1, 2 oder 3 ist. Wenn eine dieser Bedingungen nicht zutrifft muss das Programm eine Ausweichmöglichkeit haben, damit es weiter laufen kann und nicht abstürzt.
Ich habe dafür bisher folgende Lösung gefunden, die auch so funktioniert wie gewollt. Das Ganze erscheint mir aber nicht sonderlich elegant. Zudem gibt mir das Program eine Warnung aus, wenn ich die Eingabe "exit" benutze um es zu beenden. Wie kann ich das abstellen bzw. wo liegt da der Fehler?
Code: Alles auswählen
#import of the modules
from random import randint
#do an infinite loop
starter = True
while starter == True:
#input
Eingabe = input("Eine 1, 2 oder 3 eingeben.")
#possibility to end program by input, but still gives a warning back
if Eingabe == "exit":
exit()
#check if it is an integer, if not generate one randomly
try:
val = int(Eingabe)
except ValueError:
print("Das ist kein Integer!")
Eingabe = randint (1, 3)
print("Das Programm konnte den Fehler jedoch abfangen und ihre falsche Eingabe durch die zufällig generierte Zahl " + str(Eingabe) + " ersetzen.")
#input is converted to integer
Zahl = int(Eingabe)
#check if the integer is between 1 and 3, if not generate one randomly
Pruefer = [1, 2, 3]
if Zahl in Pruefer:
print("Stimmt! 1, 2 oder 3 und zudem ein Integer.")
else:
print("Stimmt nicht, aber zumindest ein Integer!")
Eingabe = randint (1, 3)
print("Das Programm konnte den Fehler jedoch abfangen und ihre falsche Eingabe durch die zufällig generierte Zahl " + str(Eingabe) + " ersetzen.")