====== LU09.L02 - Inhalte in Methoden auslagern ====== ==== 1. Menüauswahl in Methode 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 unsere 3 Schritte durch: === 1. Funktionsblock definieren === * **Name**: Die Methode druckt die Menüauswahl auf die Konsole aus, mögliche Namen wären z.B ''print_menue'', ''print_dialog'', etc. * **Parameter**: Der Methode müssen keine Informationen übergeben werden. Die Parameterliste ist also Leer ''()'' * **Return**: Die Methode gibt keinen Wert zurück, ist also ''None'' def print_menue(): === 2. docstring erstellen === Ein kurzer beschreibender Satz. def print_menue(): """ Prints the menue to the user :return: None """ === 3. Logik Implementieren === def print_menue(): """ Prints the menue to the user :return: None """ 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!') def talk_to_user(): """ Talks to the user to determine what he wants. :return: None """ print('Lieber Benutzer, herzlich willkommen zu diesem Programm') # Show Menue print_menue() selection = input('>> ') while selection != 'x': if selection == 'f': # Fibonacci print('Which position of the Fibonacci-List do you want to know?') position = int(input('')) number1 = 0 number2 = 1 counter = 3 while counter <= position: next_number = number1 + number2 number1 = number2 number2 = next_number counter += 1 print(number2) elif selection == 'e': # Kleines Einmaleins print('Which number do you want to learn?') number = int(input('')) for counter in range(0, 11): print(number * counter) elif selection == 'g': # Odd or Even print('Enter a number to check for odd/even?') number = int(input('Give a number:\n')) if number % 2 == 0: print(f'Number {number} is even.') else: print(f'Number {number} is odd.') else: # Wrong input print('Befehl nicht verstanden, bitte erneut eingeben.') print_menue() selection = input('>> ') if __name__ == '__main__': talk_to_user() ==== 2. Unterprogramme auslagern ==== Um die Übersichtlichkeit des Codes zu erhöhen, lagern wir die Unterprogramme () in eigene Methoden aus. === 1. Funktionsblock definieren === | ^ Name ^ Parameter ^ Funktion | ^ Fibonacci fibonacci | () | ''def fibonacci():'' | ^ Einmaleins multiplication_table | () | ''def multiplication_table():'' | ^ Gerade/Ungerade odd_or_even | () | ''def odd_or_even():'' | === 2. docstring erstellen === | ^ docstring | ^ Fibonacci | Prints the value from the Fibonacci series at position x. | ^ Einmaleins | Prints the multiplication table for the number x. | ^ Gerade/Ungerade | Prints if the value is even or odd | === 3. Logik implementieren === def print_menue(): """ Prints the menue to the user :return: None """ 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!') def fibonacci(): """ Prints the value from the Fibonacci series at position x. :return: None """ print('Which position of the Fibonacci-List do you want to know?') position = int(input('')) number1 = 0 number2 = 1 counter = 3 while counter <= position: next_number = number1 + number2 number1 = number2 number2 = next_number counter += 1 print(number2) def multiplication_table(): """ Prints the multiplication table for the number x. :return: """ print('Which number do you want to learn?') number = int(input('')) for counter in range(0, 11): print(number * counter) def even_or_odd(): """ Prints if the value is even or odd :return: """ print('Enter a number to check for odd/even?') number = int(input('Give a number:\n')) if number % 2 == 0: print(f'Number {number} is even.') else: print(f'Number {number} is odd.') def talk_to_user(): """ Talks to the user to determine what he wants. :return: None """ print('Lieber Benutzer, herzlich willkommen zu diesem Programm') # Show Menue print_menue() selection = input('>> ') while selection != 'x': if selection == 'f': # Fibonacci fibonacci() elif selection == 'e': # Kleines Einmaleins multiplication_table() elif selection == 'g': # Odd or Even even_or_odd() else: # Wrong input print('Befehl nicht verstanden, bitte erneut eingeben.') print_menue() selection = input('>> ') if __name__ == '__main__': talk_to_user() ---- [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi