Python Zusatzaufgaben

Schwierigkeitsgrad: Einfach

Nötiges Vorwissen: Grundlagen

Auftrag:

  1. Zuerst soll der Benutzer nach einigen Angaben gefragt werden:
    - Vorname
    - Nachname
    - Jahrgang
    - aktuelle Uhrzeit (also nur Stunde davon). Falls jetzt 15:09 Uhr ist, soll 3 eingegeben werden.
  2. Alle diese Eingaben sollen in passend benannten Variablen gespeichert werden.
  3. Der Benutzer soll freundlich begrüsst werden. Zum Beispiel: „Guten Tag, Vreni Schneider.“
  4. Aus dem Jahrgang soll das aktuelle Alter berechnet werden und in einem Sätzli ausgegeben werden. Zum Beispiel: „Du bist 37 Jahre alt“.
  5. Mit einem Turtle soll, entsprechend einer analogen Uhr, die Zeit angegeben werden. Falls der Benutzer 3 eingegeben hat (es ist also z.B. 15:38 Uhr oder 03:16 Uhr), so soll die Turtle im Uhrzeigersinn eine 4tel Umdrehung ablaufen.

Schwierigkeitsgrad: Mittel

Vorwissen: Grundwissen bis und mit while-Schleife

Name des Files: taschenrechner.py

Programmiere einen einfachen Taschenrechner für ganze Zahlen, mit welchem man Addieren, Subtrahieren, Multiplizieren und mit Rest Dividieren kann.

Schritt 1

Der User soll gefragt werden, welche Operation er durchführen möchte: Addition, Subtraktion, Multiplikation oder Division (mit Rest). Damit man nicht viel schreiben muss, könnte man jeder Operation eine Zahl oder ein Buchstabe zuordnen. Über zwei Inputs soll man dann hintereinander die beiden Zahlen eingeben können. Das Resultat wird berechnet und ausgegeben.

Tipp: Die Division mit Rest ist in Python bereits vorprogrammiert. Beispiel: 20 / 6 = 3 Rest 2. Den Ganzzahlquotienten 3 erhält man mit der Operation 20//6 und der Rest mit 20%6.

Schritt 2

Man soll beliebig viele Operationen hintereinander durchführen können. Stichwort: while-Schleife.

Man soll auch die Möglichkeit haben, das Programm zu verlassen, z.B. wenn man die Q (für Quit) eingibt. Tipp: Aus einer while-Schleife kann man mit dem Befehl break ausbrechen.

Schritt 3

Schreibe nun den Multiplikationsblock und den Divisionsblock selbst. Du darfst nur Additionen und Subtraktionen verwenden!

Schritt 4

Verpasse deinem Code nun noch den Feinschliff. Zum Beispiel sollst du dir überlegen, wie dein Code reagieren soll, wenn der User eine nicht vorgesehene Eingabe macht.

Schritt 5 (optional, anspruchsvoll)

Gestalte nun einen Taschenrechner mit einer graphischen Oberfläche mithilfe von TurtleGraphics.

Schwierigkeitsgrad: Mittel bis anspruchsvoll

Vorwissen: Grundwissen bis und mit while-Schleife

Name des Files: sbb_uhr.py

Programmiere mit TurtleGraphics eine 'analoge Uhr', welche die aktuelle Uhrzeit anzeigt. Die Uhr soll Stunden einen Stundenzeiger, Minutenzeiger und Sekundenzeiger haben.

Die aktuelle Uhrzeit kannst du mit dem datetime Modul abrufen, welches du zuerst noch importieren musst:

datetime.py
from datetime import datetime
 
now = datetime.now()

Die Stunde, Minute und Sekunde erhälst du dann wie folgt: now.hour, now.minute, now.second

Die Uhr soll schön gestaltet werden. Beispiel: SBB-Uhr.

Hintergrundbild:

Bild einfügen:

fritz = Turtle()
Options.setPlaygroundSize(1000,1000)
fritz.drawImage("sbb.jpg")

Wichtig: Bild muss in gleichem Ordner abgelegt werden, wie sich das Projekt befindet.

Schwierigkeitsgrad: Mittel bis anspruchsvoll

Vorwissen: Grundwissen, bis und mit while-Schleife

Name des Files: digitale_uhr.py

Programmiere mit TurtleGraphics eine 'digitale Uhr', welche die aktuelle Uhrzeit anzeigt. Angezeigt werden sollen: Stunde:Minute: Sekunde

Die aktuelle Uhrzeit kannst du mit dem datetime Modul abrufen. Mehr Info dazu findest du bei der Aufgabe SBB-Uhr.

Schwierigkeitsgrad: Anspruchsvoll

Vorwissen: Grundwissen bis und mit while-Schleife

Name des Files: euklid.py

Der Euklidische Algorithmus ist sehr hilfreich zur Bestimmung des größten gemeinsamen Teilers (ggT). Wenn man zwei Zahlen a und b gegeben hat, dann bestimmt man den größten gemeinsamen Teiler ggT(a,b) von a und b folgendermaßen:

  1. Teile (mit Rest) die größere der beiden Zahlen durch die kleinere.
  2. Teile nun die kleinere der beiden Zahlen durch den Rest der bei Schritt 1 herauskommt.
  3. Teile nun den Rest der bei Schritt 1 herauskommt durch den Rest der bei Schritt 2 herauskommt.
  4. Teile nun den Rest der bei Schritt 2 herauskommt durch den Rest der bei Schritt 3 herauskommt.
  5. Führe dies sooft durch bis bei einer Rechnung der Rest 0 herauskommt.
  6. Der Divisor bei dieser Rechnung ist der ggT der Zahlen a und b.

Es ist der ggT von 544 und 391 gesucht.
$544:391 = 1$; Rest 153
$391:153 = 2$; Rest 85
$153:85 = 1$; Rest 68
$85:68 = 1$; Rest 17
$68:17 = 4$; Rest 0
Die Divison geht auf, der ggT von 544 und 391 ist 17.

Versuche ein Programm zu schreiben, bei welchem mithilfe des Euklidischen Algorithmus' der ggT von zwei Zahlen berechnet wird.

Schwierigkeitsgrad: Mittel

Vorwissen: TurtleGraphics inkl. Kapitel Farben

Name des Files: kandinsky.py

Wassily Kandinsky (1866-1944) war ein russischer Maler, der für seine abstrakten Gemälde berühmt ist.

Auftrag 1: Schreibe einen Code, der mithilfe von Turtlegraphics Kandinskys Bild möglichst gut reproduziert:

Speichere das Bild unter dem Namen kandinsky_1.py

Auftrag 2: Schaue dir ein paar weitere Bilder von Kandinsky an (z.B. hier: https://www.wassilykandinsky.net/painting1896-1944.php). Zeichne dann mit Turtlegraphics deinen eigenen Kandinsky.

Speichere das Bild unter dem Namen kandinsky_2.py

Schwierigkeitsgrad: Einfach

Vorwissen: Funktionen

Definiere die Funktion bueno(n). Ein Kinder-Bueno kostet am KSR Selecta-Automat 1.30 Fr. Die Funktion soll zurückgeben, wieviel n Buenos kosten.

Wieviel kosten: 3, 7 und 1200 Buenos? Wieviel Geld gibst du pro Monat oder Jahr etwa für Buenos aus?

Definiere eine Funktion bmi(m,l), die die Masse $m$ (in kg) und die Grösse $l$ (in Metern) entgegen nimmt und den entsprechenden Body Mass Index (BMI) zurückgibt. Die Formel für diesen ist $m/l^2$. Siehe: https://de.wikipedia.org/wiki/Body-Mass-Index

Welchen BMI haben Fritz (110kg, 1.72m) und Monika (65kg, 1.64m)?

Definiere die Funktion nimm_kleinere(a,b). Diese nimmt zwei Zahlen entgegen und gibt die kleinere der beiden zurück.

Teste die Funktion anhand von drei unterschiedlichen Beispielen.

Das Ziel dieser Aufgabe ist es, einen Generator für Lottozahlen zu erstellen. Im Schweizer Lotto werden 6 aus 42 Zahlen gezogen plus eine Zusatzzahl zwischen 1 und 6. Schreibt diese 6 Zahlen in eine Liste und an der letzten Stelle dieser Liste soll die Zusatzzahl stehen.
Tipp: Hier: https://sca.ksr.ch/doku.php?id=gf_informatik_1m_20_21:python_grundlagen#aufgabe_f3 wird erklärt, wie man Zufallszahlen generiert.

  • In einem ersten Teil sollen einfach 6 Zufallszahlen zwischen 1 und 42 erzeugt werden und in eine Liste geschrieben werden. Diese Liste soll zum Schluss ausgegeben werden.
  • Füge zu den 6 Zufallszahlen jetzt noch die Zusatzzahl (Zufallszahl zwischen 1 und 6) am Ende der Liste hinzu.
  • (anspruchsvoll) Im Lotto kommt bei den 6 Lottozahlen keine Zahl zweimal vor, d.h. Zahlen dürfen nicht wiederholt werden. Ergänze deinen Code entsprechend.

Ziel: ein Konsolen-Spiel, das den Benutzer eine geheime Zahl erraten lässt. Der Benutzer rät solange, bis er die Zahl erraten hat. Der Computer antwortet nach jedem Versuch, ob die gesuchte Zahl kleiner oder grösser ist.

Herausforderungen

  • eine zufällige Zahl zwischen 0..1e6 generieren
  • als Spieler: finde die optimale Strategie - geht es mit 20 Versuchen?
  • … gibt es auch eine Lösung, wenn der mögliche Wertebereich der geheimen Zahl (-∞, ∞) ist?

Ziel:

  • Implementiere das Spiel Hangman mit TurtleGraphics.
  • Anstelle eines Galgens darf natürlich auch eine andere, gewaltfreie Zeichnung angefertigt werden.

Varianten:

  • Variante 1: Spieler:in 1 tippt ein geheimes Wort (z.B. „Schiff“) ein. Spieler:in 2 kennt dieses nicht und muss Buchstaben erraten, die im Wort vorkommen. Beim Erfolg werden die richtigen Buchstaben mit angezeigt ausgegeben. Kommt der geratene Buchstabe nicht vor, wird fortlaufend ein Galgen gezeichnet. Ist der Galgen fertig, hat der Spieler verloren.
  • Variante 2: Im Code gibt es eine sehr lange Liste mit möglichen Wörtern. Der Computer wählt das geheimes Wort aus dieser Liste zufällig aus. Der Rest des Spiels ist wie in Variante 1.
  • gf_informatik/programmieren_zusatzaufgaben.1671724762.txt.gz
  • Zuletzt geändert: 2022-12-22 15:59
  • von sca