Python Basics 2021
Einstieg nach einem Semester IF GF
Mit diesem Einstieg versuchen wir, das bisher Gelernte in einem etwas grösseren Programm anzuwenden. Gleichzeitig gilt es, die Interaktion mit dem Benutzer ordentlich zu gestalten (soweit das mit einem Terminal überhaupt möglich ist…). In den weiteren Aufgaben sollen die Eingaben geprüft und falls nötig zurückgewiesen werden, und es kommen immer neue Features hinzu.
Wir arbeiten mit Python in Visual Studio Code - das muss also zunächst installiert sein.
Aufgabe 1
Programmiere einen kleinen Taschenrechner.
- Der Benutzer soll zwei Zahlen eingeben.
- Das Programm berechnet die Summe und das Produkt der beiden Zahlen und gibt sie aus.
Aufgabe 2.1
- Programmiere den TR (Taschenrechner) so um, dass er jedesmal nach der Berechnung und Ausgabe der beiden Ergebnisse sofort wieder nach neuen Zahlen fragt - der TR läuft also ewig weiter.
- Um den TR zu verlassen, kann der Benutzer statt einer Zahl den Buchstaben q (für 'quit') eingeben.
- Zudem soll das Programm jetzt sicherstellen, dass der Benutzer auch wirklich Zahlen eingibt. Sobald er etwas anderes eingibt, soll es wieder bei der Eingabe der ersten Zahl anfangen. Das Programm darf bei falschen Eingaben nicht mehr abstürzen!
Zwischenaufgabe: Funktionen
- In Aufgabe 2.2 wird ein wesentlicher Teil des Codes in Funktionen ausgelagert. Hier gibt es einige Zusatzaufgabe für mehr Routine mit Funktionen.
- Lege in deinem Talit-Ordner einen neuen Ordner Funcs an.
- Lade diese ZIP-Datei herunter und entpacke die beiden Dateien darin in den Ordner Funcs.
- Die Aufgaben stehen als Kommentare in funcs.py.
- Wir lösen die erste Aufgabe gemeinsam.
Aufgabe 2.2
- falls du das nicht eh schon gemacht hast, ist das die nächste Aufgabe: Prüfung und erneute Abfrage bei falscher Eingabe soll in einer Funktion
get_int_value()
erfolgen, die dann im Hauptprogramm für jede Zahl einmal aufgerufen wird.
""" def get_int_value(caption): Diese Funktion zeigt dem Benutzer einen Text (Parameter caption) an und fordert ihn auf, eine Zahl einzugeben. Die Eingabe wird so lange wiederholt, bis eine gültige Zahl eingegeben wurde oder die Eingabe vom Benutzer mit "q" abgebrochen wurde. Zurückgegeben, wird entweder die Zahl oder q. Die Funktion soll eine weitere Funktion validate_int() verwenden (s. unten). Parameter: caption String, der dem Benutzer für die Eingabe angezeigt wird Rückgabewerte: Integer, Boolean num eingegebene Zahl, wenn quit False ist quit True Benutzer hat mit "q" abgebrochen False Zahl steht in num """ def get_int_value(caption): pass """ def validate_int(i): Diese Funktion überprüft, ob der String i in eine Zahl umgewandelt werden kann. Falls ja, wird sie zurückgegeben; falls nein, wird ein Fehler zurückgegeben. Parameter: i String, der in eine Zahl umgewandelt werden soll Rückgabewerte: Integer, Integer num ermittelte Zahl, bzw. 0 bei Fehler err 0 kein Fehler, Zahl ermittelt -1 Fehler, String i enthält Zeichen, die nicht in Zahlen umgewandelt werden können """ def validate_int(i): pass
Aufgabe 3
- In der nächsten Version werden weiterhin zwei Zahlen eingegeben, aber neu ist, dass auch der Operator eingegeben werden kann/muss.
- Es werden also nicht mehr einfach Summe und Produkt berechnet, sondern der Benutzer gibt die Operation vor, und es wird anschliessend nur noch genau diese Operation berechnet und ausgegeben.
- Erlaubte Operatoren sind:
+ - * / % e w
+ - * /
dürften klar sein%
bedeutet modulo und berechnet den Rest der ganzzahligen Division.
7 / 3 = 3 Rest 1, somit 7 % 3 = 1
In Python verwendet man dafür ebenfalls den Operator %.e
verwenden wir für exponent, also „Zahl1 hoch Zahl2“.
2 e 3 ist 2 * 2 * 2 = 8
2e3 wird in Python mit 2**3 geschrieben.w
steht für Wurzel, also „Zahl2. Wurzel aus Zahl1“.
8 w 3 = 2
8w3 wird in Python mit 8**(1/3) geschrieben.
Für diese Aufgabe benötigen wird drei neue Funktionen:
def get_operator(caption) # analog zu get_int_value(caption), aber für Operatoren
und darin
def validate_op(s) # analog zu validate_int(i), aber für Operatoren
und schliesslich für die eigentliche Berechnung:
def calc_result(n1, n2, op) # untersucht op, berechnet das passende Ergebnis und gibt es zurück
Aufgabe 4
- Nun kommen wir dem Taschenrechner ein schönes Stück näher…
- Es werden nun keine einzelnen Zahlen und auch kein Operator mehr abgefragt, sondern nur noch der ganze Ausdruck, zB. 24*13.
- Es gibt also nur noch eine einzige Eingabe.
- Das Programm prüft vor der Berechnung, ob der Ausdruck aus zwei Zahlen und einem Operator besteht. Falls nein, wird das erste ungültige Zeichen angezeigt und die Eingabe muss korrekt wiederholt werden.
Aufgabe 5
- Jetzt soll man nicht nur zwei Zahlen mit einem Operator eintragen können, sondern 'beliebig' viele Zahlen mit jeweils einem Operator dazwischen, also n Zahlen und n-1 Operatoren.
- Die Berechnung muss in der vorgeschriebenen Reihenfolge erfolgen: Hoch vor Punkt vor Strich
Aufgabe 6
- Als letztes soll der Benutzer in seinem Ausdruck auch noch Klammern setzen können.
- Und: Negative Zahlen sind ebenfalls erlaubt und werden korrekt behandelt.