16-is-dead/clean_input.py

74 lines
2.1 KiB
Python
Raw Permalink Normal View History

"""This module handles most user inputs."""
__author__ = ""
__credits__ = ""
__email__ = ""
2020-12-09 11:24:01 +01:00
2020-12-10 10:13:16 +01:00
import sys
import game
2020-12-09 11:24:01 +01:00
def io_str(message: str, options: list) -> str:
"""
This method checks if a user input fits the options.
It also handles 'r' for restarting and 'q' for quitting.
:param message: message needs to be a string that is printed for user instruction.
:param options: options is a list of viable inputs.
:return: Cleaned user input
"""
while True:
2020-12-09 11:24:01 +01:00
try:
i = str(input(message))
except (ValueError, NameError):
i = 0
2020-12-09 11:24:01 +01:00
print("Eingabe nicht gültig, bitte wiederhole deine Eingabe.")
if i in options:
return i
2020-12-10 10:13:16 +01:00
2020-12-09 11:24:01 +01:00
else:
if i == "q":
print(
"---------------------\nSpiel wird beendet...\n---------------------")
sys.exit()
elif i == "r":
print(
"---------------------\nSpiel wird neu gestartet...\n---------------------")
game.main()
else:
print('Noch nicht ganz richtig. Hast du deine Auswahl auch richtig geschrieben?')
def io_int(message: str) -> int:
"""
This method checks if a user input is an integer >1.
It also handles 'r' for restarting and 'q' for quitting.
:param message: message needs to be a string that is printed for user instruction
:return: Integer >1
"""
while True:
unfiltered_input = input(message)
if unfiltered_input == "q":
print("---------------------\nSpiel wird beendet...\n---------------------")
sys.exit()
2020-12-18 14:33:14 +01:00
elif unfiltered_input == "r":
print(
"---------------------\nSpiel wird neu gestartet...\n---------------------")
game.main()
try:
i = int(unfiltered_input)
if i >= 1:
return i
else:
print('Bitte gib eine ganze Zahl größer als 0 ein. ')
except (ValueError, NameError):
print("Eingabe nicht gültig, bitte wiederhole deine Eingabe.")