LU11.A03 - Einleser erweitern
Ausgangslage
Sie haben in der Aufgabe LU11.A02 eine input_reader
-Modul erstellt. Damit können Sie jetzt int
und float
Zahlen einlesen, und dabei sicherstellen, dass die eingebenenen Werte wirklich einem int
respektive einem float
entsprechen.
In dieser Aufgabe erweitern Sie diese Einleser, damit den zwei Funktionen read_int(text)
und read_float(text)
neu auch Grenzwerte mitgegeben werden können. Damit könnten Sie dann zum Beispiel auch sicherstellen, dass note = input_reader.read_float('Bitte eine Schulnote eingeben',lower_bound=1,upper_bound=6)
nur Werte zwischen 1.0
und 6.0
akzeptiert.
Aufgabe
Teilaufgabe 1
Nehmen Sie die Github-Classroom Aufgabe an und clonen Sie das Repository in ihre Entwicklungsumgebung.
Studieren Sie die zwei Python Files input_reader.py
und main.py
.
- Sehen Sie im File
main.py
an welcher stelle die Grenzwerte mitgegeben werden? Vielleicht erinnern Sie sich an die LU09 wo wir die benannten Argumente kennengelernt haben.
- Sehen Sie im File
input_reader.py
das wir die Paramter für die Funktion noch nicht mitlower_bound
undupper_bound
ergänzt haben? In der LU09 haben wir auch kennengelernt wie sie Default-Werte für Parameter definieren. Dieses wissen werden wir hier jetzt benötigen.
Teilauftrag 2
Ergänzen Sie die Parameter lower_bound
und upper_bound
in der Funktionsdefinition von read_float
und read_int
.
Damit wir lower_bound
und upper_bound
nicht jedes mal angeben müssen, sondern nur dann, wenn wir auch Grenzwerte brauchen, überlegen Sie sich sinnvolle default-Werte für lower_bound
und upper_bound
und weisen Sie diese zu. Die Theorie dazu, wie Sie default-Werte zuweisen finden Sie hier.
Plus und Minus Unendlich wären vielleicht ganz gute default-Werte? https://www.w3schools.com/python/ref_math_inf.asp math.inf
Oder vielleicht einfach None
, also keiner? Und dann überprüfen ob if lower_bound is not None and num < lower_bound:
.
Entscheiden Sie selbst.
Teilauftrag 3
Überlegen Sie sich, wie Sie die Funktion read_float(text_to_display, lower_bound = XX, upper_bound = XX):
anpassen müssen, damit die Überprüfung auf die Grenzwerte funktioniert.
Wichtig Falls der User einen Wert ausserhalb des Grenzwerts eingibt, soll er darauf hingewiesen werden, wo der Grenzwert liegt und ob er oberhalb oder unterhalb davon einen Wert eingeben muss.
def read_float(text_to_display, lower_bound = None, upper_bound = None): ... def read_float(text_to_display, lower_bound = float(inf), upper_bound = float(inf)): ... def read_int(text_to_display, lower_bound = None, upper_bound = None): ... def read_int(text_to_display, lower_bound = int(inf), upper_bound = int(inf)): ...
Teilauftrag 4
Importieren Sie ihr input_reader
Modul in ihrem main.py
damit das Programm funktioniert.
from input_reader import read_int, read_float def main(): # do something to show functionality mark = read_float('Please enter a mark for your python class> ', lower_bound= 0, upper_bound= 6) score_0_to_100 = read_int('Please enter a whole number between 0 and 100> ', lower_bound = 0, upper_bound = 100) positive_zahl = read_int('Please enter a positive whole number> ', lower_bound = 1) negative_zahl = read_int('Please enter a negative whole number> ', upper_bound = -1) print('Your mark is: ', mark) print('Your rating is: ', score_0_to_100) print('Your positive number is: ', positive_zahl) print('Your negative number is: ', negative_zahl) if __name__ == '__main__': main()