====== LU09.A02 - Inhalte in Funktionen auslagern ====== Lagern Sie Funktionalität in Funktionen aus um den Code besser lesbar zu machen. ===== Akzeptieren Sie das Github-Classroom-Assignment ===== Akzeptieren Sie das Github-Assignment und klonen Sie das Projekt in Ihre IDE. ===== Aufgaben ===== ==== 0. Programm ausführen ==== Führen Sie das Programm ''main.py'' aus und machen Sie sich mit den Funktionen vertraut. Führen Sie auch die Testfälle main_test.py aus. Diese müssen alle auf ''PASSED'' stehen. ============================= test session starts ============================== collecting ... collected 4 items main_test.py::test_menue PASSED [ 25%] main_test.py::test_fibonacci PASSED [ 50%] main_test.py::test_einmaleins PASSED [ 75%] main_test.py::test_even_odd PASSED [100%] ============================== 4 passed in 0.01s =============================== ==== 1. Menüauswahl in Funktionen auslagern ==== Wir haben uns vorgenommen, dass wir Duplikate im Code vermeiden möchten. Im Programm ''talk_to_user'' listen wir dem User an zwei Stellen im Code seine Auswahlmöglichkeiten auf: # Show Menue print() # Newline print('==============================================') print('Was möchten Sie mit dieser Applikation machen?') print('Wählen Sie \'f\' für Fibonacci-Reihe ausgeben') print('Wählen Sie \'e\' für Kleines Einmaleins') print('Wählen Sie \'g\' für Berechnung Gerade / Ungerade') print('Wählen Sie \'x\' um das Programm zu beenden!') Wir möchten diesen Programmteil nun in eine externe Methode packen. Wir arbeiten uns also durch die 3 Schritte durch: - Funktionsblock definieren - docstring erstellen - Logik implementieren Ihre Änderung darf das Resultat der Tests nicht verändern, es müssen immer noch alle Tests auf ''PASSED'' stehen. ============================= test session starts ============================== collecting ... collected 4 items main_test.py::test_menue PASSED [ 25%] main_test.py::test_fibonacci PASSED [ 50%] main_test.py::test_einmaleins PASSED [ 75%] main_test.py::test_even_odd PASSED [100%] ============================== 4 passed in 0.01s =============================== Setzen Sie dies im Code nun um. Erstellen Sie einen **Commit**, wenn Sie die Lösung implementiert haben. Eine mögliche Lösung finden Sie hier: [[modul:m319:learningunits:lu09:loesungen:funktionen#menueauswahl_in_methode_auslagern|Menüauswahl in Funktion auslagern]] ==== 2. Unterprogramme auslagern ==== Um die Übersichtlichkeit des Codes zu erhöhen, lagern wir die **Unterprogramme (Fibonacci, Einmaleins und Gerade/Ungerade) in eigene Funktionen** aus. Um diese Unterprogramme nun in eine externe Methoden zu packen, arbeiten uns für jede Methode durch die 3 Schritte durch: - Funktionsblock definieren - docstring erstellen - Logik implementieren Ihre Änderung darf das Resultat der Tests nicht verändern, es müssen immer noch alle Tests auf ''PASSED'' stehen. ============================= test session starts ============================== collecting ... collected 4 items main_test.py::test_menue PASSED [ 25%] main_test.py::test_fibonacci PASSED [ 50%] main_test.py::test_einmaleins PASSED [ 75%] main_test.py::test_even_odd PASSED [100%] ============================== 4 passed in 0.01s =============================== Setzen Sie dies im Code nun um. Erstellen Sie einen **Commit**, wenn Sie die Lösung implementiert haben. Eine mögliche Lösung finden Sie hier: [[modul:m319:learningunits:lu09:loesungen:funktionen#unterprogramme_auslagern|Unterprogramme auslagern]] ----
//=> GitHub Repo für externe Besucher// GitHub Repository https://github.com/templates-python/m319-lu09-a02-define-functions //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden//
{{tag>M319-LU09}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Marcel Suter, Kevin Maurizi