| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
| de:modul:m319:learningunits:lu10:aufgaben:einlesererweitert [2025/06/23 07:45] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m319:learningunits:lu10:aufgaben:einlesererweitert [2025/06/23 07:45] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden msuter |
|---|
| | ====== LU10.A03 - Einleser erweitern ====== |
| |
| | ===== Ausgangslage ===== |
| | |
| | Sie haben in der Aufgabe [[de:modul:m319:learningunits:lu10:aufgaben:einleser|LU10.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 [[de:modul:m319:learningunits:lu09:funktionenerweitert|LU09]] wo wir die benannten Argumente kennengelernt haben. |
| | * Sehen Sie im File ''input_reader.py'' das wir die Parameter für die Funktion noch nicht mit ''lower_bound'' und ''upper_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 in [[de:modul:m319:learningunits:lu09:funktionenerweitert|LU09]]. |
| | |
| | <WRAP center round tip 60%> |
| | Plus und Minus Unendlich wären vielleicht ganz gute default-Werte? |
| | [[https://www.w3schools.com/python/ref_math_inf.asp]] |
| | |
| | Oder vielleicht einfach ''None'', also keiner? Und dann überprüfen ob ''if lower_bound is not None and num < lower_bound:''. |
| | |
| | Entscheiden Sie selbst. |
| | </WRAP> |
| | |
| | |
| | ==== 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. |
| | |
| | <WRAP center round box 60%> |
| | <code python> |
| | 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)): |
| | ... |
| | </code> |
| | </WRAP> |
| | |
| | |
| | |
| | ==== Teilauftrag 4 ==== |
| | Importieren Sie ihr ''input_reader'' Modul in ihrem ''main.py'' damit das Programm funktioniert. |
| | |
| | <WRAP center round box 60%> |
| | <code python> |
| | 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() |
| | </code> |
| | </WRAP> |
| | |
| | |
| | |
| | ---- |
| | <details> |
| | <summary>//=> GitHub Repo für externe Besucher//</summary> |
| | GitHub Repository https://github.com/templates-python/m319-lu10-a03-reader-module-extended |
| | |
| | //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden// |
| | |
| | </details> |
| | {{tag>M319-LU10}} |
| | [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi |