Vorsemesterkurs Informatik Übungsaufgaben Python-Datentypen Aufgabe 1: Python starten (a) Öffne ein Terminal (konsole, xterm, . . . ), gib python ein und drücke die Enter-Taste. Lies ab, welche python-Version vorliegt. (b) Gib danach exit() ein und drücke die Enter-Taste. Was passiert? (c) Wir versuchen nun, die Entwicklungsumgebung idle zu starten. 1. Gib dazu in einem Terminal idle ein (drücke noch nicht die Enter-Taste). 2. Drücke danach zweimal auf die TAB -Taste. Mit der TAB-Taste kannst du anzeigen lassen, ob es mehrere idle-Versionen gibt. Falls mehrere idle-Versionen erscheinen, tippe die höchste Version ein und drücke auf Enter. Beispiele: Falls nur idle erscheint, gib ein: idle & Falls idle-python3.1 erscheint, gib ein: idle-python3.1 & 3. Ein Fenster mit der Überschrift Python Shell öffnet sich. python befindet sich jetzt im interaktiven Modus, welchen du schnell durch die drei Zeichen >>> erkennst. (d) Gib nun in der python-Shell print(’Hello World!’) ein. (e) Gib >>> >>> >>> in der python-Shell (d. h. im interaktiven Modus) ein: a = 123 b = 456 a*b (f) Gib >>> >>> >>> in der python-Shell (d. h. im interaktiven Modus) ein: c = 2 d = 32 c**d (g) Am Anfang hast du Hello World ausgegeben. Danach hast du a · b und cd berechnet. Diese Anweisungen lassen sich in einem Programm speichern, indem du eine Datei wie folgt anlegst: 1. In dem Fenster Python-Shell, klicke links oben auf File → New Window. Ein Fenster mit dem Titel *Untitled* öffnen sich. 2. Gib in dem Fenster folgendes ein. print(’Hello World!’) a = 123 b = 456 a*b c = 2 d = 32 c**d 3. Im Fenster *Untitled*, klicke links oben auf File → SaveAs. Es öffnet sich ein Fenster, in welchem du den Dateinamen und den Speicherort auswählen kannst. Speichere die Datei als hello.py in einem Ordner deiner Wahl ab. 4. Das Fenster *Untitled* hat nun eine andere Überschrift. Klicke in diesem Fenster oben auf Run → Run Module (Alternativ kannst du auch F5 drücken). Nun wird das Programm in einer interaktiven python-Shell ausgeführt. Hier kannst du jetzt die eben deklarierten Objekte beobachten. Gib hierzu zum Beispiel print(a) oder nur a ein und bestätige mit der Enter-Taste. 5. Falls du später die Datei hello.py oder eine andere python-Datei öffnen willst, starte IDLE mit dem Befehl idle hello.py. Falls IDLE schon gestartet wurde führt folgende Prozedur zum Ziel: Im Fenster Python Shell, klicke oben auf File → Open und wähle durch Klicken deine Datei aus. Klicke dann auf Open. 6. Möchtest du den Inhalt dieser Datei auch in einem anderen Programm verwenden, so kannst du from hello import * print(a+b) in eine weitere Datei schreiben und diese Ausführen. Aufgabe 2: Primitive Datentypen (a) Im interaktiven Modus von Python: 1. 2. 3. 4. 5. 6. Erstelle zwei logische Variablen a und b mit unterschiedlichen Belegungen Gebe das Ergebnis der Konjunktion dieser Variablen aus Gebe das Ergebnis der Disjunktion dieser Variablen aus Belege a mit ihrem negierten Wert Gebe das Ergebnis der Konjunktion der beiden Variablen aus Gebe das Ergebnis der Disjunktion der beiden Variablen aus (b) Im interaktiven Modus von Python berechne: (2 + 3 · 4) · 365, wobei: • nur Integers benutzt werden dürfen • arithmetische Operationen nur für Variablen benutzt werden dürfen • in jeder Zeile auf einmal nur eine arithmetische Operation berechnet werden darf 250 · 48 − 6 , wobei: 35 · 23 • arithmetische Operationen nur für Variablen benutzt werden dürfen • in jeder Zeile auf einmal nur eine arithmetische Operation berechnet werden darf • 1. nur Floats benutzt werden dürfen 2. nur Floats benutzt werden dürfen aber ein gerundetes Ergebnis erwartet wird 3. nur Integers benutzt werden dürfen (c) Im interaktiven Modus von Python berechne: (d) Im interaktiven Modus von Python erzeuge eine Variable, die die Zeichenkette Hello world!!! enthält. Dabei muss jedes Zeichen dieser Zeichenkette durch sein ASCII-Zeichenkode eingegeben werden. Aufgabe 3: Integer vs. Float (a) Beantworte die folgenden Fragen, ohne den Python-Interpreter zu nutzen. Überprüfe dein Ergebnis anschließend, in dem du die Terme vom Interpreter berechnen lässt. 1. 2. 3. 4. Ist (3 ∗ 12) + 15 in Python dasselbe wie 3 ∗ 12 + 15? Ist 21/7 in Python dasselbe wie 21.0/7.0? Ist (20/3) ∗ 3 + 1 == 21? Wie ist es mit (20//3) ∗ 3.0 + 1.0 == 21? Warum? (b) Gegeben seien zwei Integer-Variablen x und y. Überlege dir, wie man mit den sechs Grundrechenarten herausfinden kann, ob sich x//y von bei der Berechnung von x/y unterscheidet. (c) 1. Berechne den Wahrheitswert von (True or False) == not (not True and not False). 2. Ersetze auf beiden Seiten des Vergleichs True durch False. 3. Ersetze auf beiden Seiten des Vergleichs False durch True. Page 2 4. Überlege, wieso das Ergebnis so sein könnte, wie es ist. Die Vorlesung von gestern könnte dabei hilfreich sein. (d) 1. Lege eine Variable test an, und weise ihr den Wert 11 zu. 2. Teile test durch 2, und weise das Ergebnis wiederum test zu. 3. Führe diesen Schritt einige (6-7) Male durch und überprüfe den Wert von test. Macht das Ergebnis Sinn? 4. Wiederhole die bisherigen Schritte, nachdem du test den Wert 11.0 zugewiesen hast. Aufgabe 4: Zahlentrick Es gibt einen Zahlentrick, der folgendermaßen funktioniert: Man bittet jemanden, sich eine einstellige Zahl auszudenken. Dann soll er zu dieser Zahl noch einmal dieselbe Zahl addieren. Danach soll die 10 hinzuaddiert werden und durch 2 geteilt werden. Schließlich wird noch die gedachte Zahl abgezogen. Egal, welche Zahl ausgedacht wurde - das Ergebnis ist immer die 5. Um dies zu überprüfen, schreibe ein Programm, das eine einstellige Zahl als Eingabe bekommt und führe genau diese Rechenschritte mit dieser Zahl aus. Gib das Ergebnis aus. Aufgabe 5: Boolesche Ausdrücke Weise den Variablen im folgenden Python-Programm Werte zu, sodass folgende Sätze auf der Konsole ausgegeben werden: 1 2 3 4 5 6 7 #!/usr/bin/env python # encoding: utf-8 def main(): bauer = True koenig = False gewaehlt = False streichholz = False 8 9 10 11 12 13 14 15 16 17 18 19 if bauer and koenig: print u"Seid ihr der König?" if bauer and koenig and not gewaehlt: print u"Ich hab’ euch nicht gewählt!" else: if bauer and streichholz: print u"Wir haben eine Hexe gefunden." print u"Dürfen wir sie verbrennen?" else: if bauer: print u"Hilfe hilfe ich werde unterdrückt!" 20 21 22 if __name__ == ’__main__’: main() (a) Seid ihr der König? Ich hab’ euch nicht gewählt! (b) Seid ihr der König? Wir haben eine Hexe gefunden. Dürfen wir sie verbrennen? Viel Erfolg! Page 3