Lösungen (Python)

1. Erste Schritte

Fragen

1.      Für Eingabe und Ausgabe benutzt man in Python die Funktionen print() und input(). Das sind aber nicht die einzigen Funktionen für diesen Zweck, du lernst später noch weitere kennen.

2.      Ein Interpreter übersetzt jede Zeile eines Programms für den Computer einzeln, ein Compiler nur im Ganzen.

3.      Nur auf den ersten Blick: Eine Zuweisung wie Zahl = 2 * 3 sieht aus wie eine Gleichung, aber auch Zahl = Zahl + 1 kann eine Zuweisung sein. Eine passende Gleichung gibt es nicht.

Keine Aufgabe

 

2. Bedingung und Kontrolle

Fragen

1.      Der Operator mit einem einfachen Gleichheitszeichen (=) ist für Zuweisungen zuständig, der Operator mit doppeltem Gleichheitszeichen (==) für Vergleiche.

2.      Das Programmstück lässt sich mit else vereinfachen:

if Zahl == 0 :

  print("Kein Kehrwert");

else :

  print(1/Zahl);

Aufgaben

1.      Das Programm trägt den Namen kehrwert.py.

2.      Hierzu schau dir mal das Programm password.py an.

 

3. Vergleichen und wiederholen

Fragen

1.      Bei einem Vergleich, ob etwas kleiner (<) oder größer (>) ist, wird die Vergleichszahl ausgeschlossen. Soll die Vergleichszahl mit einbezogen werden, so verwendest du »<=« oder »>=«. Ein Beispiel: Die Bedingung x < 5 erfüllen z.B. die positiven Zahlen 1, 2, 3, 4; für x <= 5 gelten dagegen 1, 2, 3, 4 und 5.

2.      Die Operation Anzahl + 1 zählt einen Wert um 1 herauf, Anzahl – 1 zählt um 1 »rückwärts«, Anzahl * 2 verdoppelt einen Wert.

3.      Eine Zufallszahl für einen Würfel erzeugt man so:

Wuerfel = random.randint(1,6)

Aufgaben

1.      Die Ergänzung end="" findest du in den Programmen mathe1a.py, mathe2a.py und mathe3a.py.

2.      Das Programm zENSUR2.py bietet das Bewertungsschemata für 0 bis 15 Punkte an.

3.      Ein paar Beispiele findest du in der Datei alter.py.

 

4. Geld-Spielereien

Fragen

1.      Mit der Funktion sleep() des Moduls time macht der Computer eine Pause in Sekunden. Das wäre dann z.B. bei time.sleep(2) zwei ganze Sekunden, bei time.sleep(0.1) eine Zehntelsekunde.

2.      Es kommt zu einer Endlos-Schleife, weil Kapital nie den gewünschten Wert erreicht.

3.      Alle drei sind auf dem Bildschirm unsichtbar: Ein Leerzeichen ist ein kleiner Zwischenraum, der als einzelnes Zeichen gewertet wird (" "). Eine Leerzeile ist sozusagen ein horizontaler Zwischenraum (zwischen zwei Zeilen). Und die Leerkette ist ein Text mit Nichts ("").

Aufgaben

1.      Das Programm hat den Namen mathe5.py.

2.      Dein Computer findet im Programm raten5.PY eine von dir ausgedachte Zahl heraus, wenn du ihn nicht betrügst.

3.      Nach demselben System spielt der PC im Programm raten6.PY ohne zu mogeln gegen sich selbst.

 

5. Funktionen

Fragen

1.      Globale Variablen gelten und existieren überall im Programm, lokale Variablen nur innerhalb eines Blocks (Funktion, Kontrollstruktur).

2.      Als Parameter können Variablen verwendet werden, aber auch feste Werte (Konstanten).

Aufgaben

1.      Die Version mit den Strings heißt tausch3.py.

2.      In summe.py gibst du z.B. 10 ein, dafür bekommst du die Summe aller ganzen Zahlen von 1 bis 10.

3.      In mittel.py gibst du z.B. 10 ein, dafür bekommst du den Mittelwert der ganzen Zahlen von 1 bis 10.

4.      Hierfür gibt es keine Beispiele, ich überlasse es dir, welchen deiner Projekte du Funktionen verpassen möchtest. Vielleicht noch für Hallo noch Mathe?

 

6. Klassen und Module

Fragen

5.      Variablen, die in einer Klasse vereinbart werden, nennt man Attribute, in einer Klasse definierte Funktionen heißen Methoden.

6.      Kapselung bedeutet, dass mehrere Elemente in einer Klasse zusammengefasst werden. Ein Zugriff von außen ist dann nur über eine Verknüpfung mit einem Objekt möglich, das als Instanz dieser Klasse erzeugt wurde.

7.      Private Elemente lassen sich nur innerhalb eines Objekts oder einer Klasse nutzen, geschützte Elemente auch innerhalb aller abgeleiteten Klassen.

Keine Aufgaben

 

7. Einstieg in tkinter

Fragen

1.      Bis jetzt sind die Komponenten Label und Button bekannt, dazu kennst du Tk für die Fensterklasse und messagebox für ein Meldefenster.

2.      Mit dem command-Parameter verknüpft man eine Komponente (wie z.B. einen Button) mit einer Ereignis-Funktion.

Aufgabe

1.      Einen Lösungsvorschlag findest du in horoskop1.py.

 

8. Komponenten-Sammlung

Fragen

1.      Wenn das Ereignis <<ListboxSelect>> eintritt, wurde ein Eintrag im Listenfeld aktiviert bzw. ausgewählt. Über die verknüpfte Ereignis-Funktion wertet man das Ergebnis von curselection() aus, um die Nummer des aktivierten Eintrags zu ermitteln.

2.      Bei Optionsfeldern verwendet man eine gemeinsame Variable (vom Typ IntVar), in der die Nummer des aktivierten Radiobuttons zu finden ist. Bei Kontrollfeldern bekommt jede Komponente eine eigene Variable, dort ist dann vermerkt, ob der Checkbutton aktiviert oder deaktiviert ist.

Aufgaben

1/2/3. Die Lösungen findest du in den Dateien horoskop2.py bis horoskop4.py.

 

9. Aktion Seelenklempner

Fragen

3.      Eine Label-Komponente kann nur etwas anzeigen, während man in einer Entry-Komponenten etwas eingeben kann.

4.      Geöffnet wird eine Textdatei mit der Methode open(). Je nach Modus ("r" oder "w") kann dann aus der Datei gelesen oder in sie hineingeschrieben werden. Das lässt sich u.a. mit den Methoden read() und write() erledigen.

Aufgaben

5.      Das steckt schon in der Datei klemp5.py.

6.      Einen Schieberegler für Prozente findest du in der Datei prozente.py.

7.      Dazu schau dir mal das Programm vokabeln.py an.

 

10. Menüs und Dialoge

Fragen

8.      Zuerst erzeugt man eine Instanz der Klasse Menu. Das kann eine Menüleiste sein, wenn es sich um ein Dropdown-Menü handeln soll. Über add_cascade() und add_command() fügt man Einträge zur Leiste und zur Menü-Liste hinzu.

9.      Für Meldeboxen benutzt man Methoden von messagebox. Auf »Knopfdruck« öffnet man ein Meldefenster, wenn man showinfo() in einer entsprechende Ereignis-Funktion aufruft.

Keine Aufgabe

 

11. Grafik in Python

Fragen

1.      Der Ursprung des Koordinatensystems auf dem Bildschirm liegt links oben und beginnt dort mit x=0 und y=0.

2.      Beim Zeichnen einer Linie, die hier immer eine Gerade ist, sind Anfangs- und Endpunkt gegeben. Bei Rechtecken und Ellipsen werden die Ecken links-oben und rechts-unten vorgegeben, In diesen unsichtbaren Bereich muss das Rechteck bzw. die Ellipse genau hineinpassen.

Aufgaben

1.      Die Lösung ist in der Datei grafik6a.py zu finden.

2.      Das Programm mit den bunten Quadraten heißt grafik6b.py.

3.      Den Versuch, ein Haus zu zeichnen, habe ich im Programm haus1.py gemacht.

 

12. Animationen

Frage

1.      Zuerst muss eine Bilde-Datei geladen werden, danach wird das passende Bild-Objekt erzeugt:

Bild = PhotoImage(file="Bild.gif")

Objekt = Grafik.create_image(x, y, image=Bild)

Aufgaben

1.      Im Programm movie1A.py erscheint ein Quadrat und lässt sich bewegen.

2.      Dafür findest du eine Lösung in den Dateien movie6.py und mplayerY.py.

 

13. Kleiner Krabbelkurs

Fragen

1.      Weil sich ein Sprite oft über ein Spielfeld bewegt, das eine Farbe oder eine Struktur hat, empfehlen sich Bilder mit transparentem Hintergrund, damit man den nicht auf dem Spielfeld sieht.

2.      Man kann mit event.type alle Tasten abfragen, sogar Tastenkombinationen. Näheres dazu steht in der Pygame-Dokumentation (https://www.pygame.org/docs/ref/key.html).

Aufgabe

1.      In buggy3a.py läuft der Käfer "durch".

 

14. Vom Käfer zur Wanze

Fragen

1.      Klar kann man eine Spielfigur mit Maus und Tastatur gemeinsam steuern. Du musst einfach beide Event-Abfragen im selben Programm lassen (z.B. buggy5B.py).

2.      Mit dem math-Modul stehen dir jede Menge mathematischer Funktionen zur Verfügung.

Aufgabe

1.      Die Korrektur der Mauszeiger-Position findest du in buggy5A.py.

 

15. Dodge oder Hit

Keine Fragen

Aufgabe

1.      In dodger4A.py sieht man die Figur bei einem Treffer leiden.

 

16. Play the Game

Keine Fragen und keine Aufgaben