Übungen

Übungen#

Übung 7.1

Schreiben Sie ein Programm, das einen Benutzer oder eine Benutzerin auffordert, ein Passwort einzugeben (initialisieren Sie vorab ein Passwort). Drei Versuche sind möglich. Bei dreimaliger Falscheingabe soll das Programm abgebrochen werden.

Lösung

versuche = 0
passwort = 'F6vfGV+vT6#>hZyu4c=z+?<8'

while versuche < 3:
    eingabe = input('Bitte geben Sie das Passwort ein: ')
    if eingabe == passwort:
        print('Das richtige Passwort wurde eingegeben. Zugriff gewährt.')
        break
    versuche += 1

Übung 7.2

Erstellen Sie ein einfaches Programm, das einen Werkzeugkatalog mit Preisen verwaltet. Das Programm soll:

  1. Ein Dictionary mit 4 Werkzeugen und deren Preisen erstellen.

  2. Den Preis eines bestimmten Werkzeugs ausgeben.

  3. Ein neues Werkzeug zum Katalog hinzufügen.

  4. Alle Werkzeuge mit ihren Preisen anzeigen.

Lösung

# 1. Werkzeugkatalog erstellen
werkzeuge = {
    "Hammer": 15.50,
    "Schraubenzieher": 8.75,
    "Zange": 12.30,
    "Säge": 22.90
}

# 2. Preis eines bestimmten Werkzeugs ausgeben
werkzeug = "Hammer"
print(f"Der Preis für {werkzeug} beträgt {werkzeuge[werkzeug]} Euro.")

# 3. Neues Werkzeug hinzufügen
werkzeuge["Bohrmaschine"] = 89.99
print(f"Bohrmaschine wurde zum Katalog hinzugefügt.")

# 4. Alle Werkzeuge mit Preisen anzeigen
print("\nWerkzeugkatalog:")
print("-----------------")
for name, preis in werkzeuge.items():
    print(f"{name}: {preis} Euro")

Übung 7.3

Schreiben Sie einen 1x1-Trainer. Gehen Sie dabei wie folgt vor:

  1. Schreiben Sie eine Funktion, die eine 1x1-Aufgabe stellt (zum Beispiel: Wieviel ist 3 x 5?). Die Funktion soll überprüfen, ob die eingegebene Antwort korrekt ist. Bei einer falschen Antwort soll das richtige Ergebnis ausgegeben werden.

  2. Im Hauptprogramm soll der Benutzer gefragt werden, wie viele 1x1-Aufgaben trainiert werden sollen. Danach sollen entsprechend viele aufgaben gestellt werden. Am Ende soll das Hauptprogramm dem Benutzer mitteilen, wieviel Prozent der Aufgaben korrekt gelöst wurden.

Lösung

import numpy as np

def stelle_aufgabe():
    zahl01 = np.random.randint(1, 11)
    zahl02 = np.random.randint(1, 11)
    antwort = int(input(f'Wieviel ist {zahl01} x {zahl02}? '))
    if antwort == zahl01 * zahl02:
        return True
    else:
        print(f'Leider falsch, das richtige Ergebnis wäre {zahl01 * zahl02} gewesen.')
        return False
    
anzahl_aufgaben = int(input('Wie viele Aufgaben sollen gestellt werden? '))
anzahl_richtige_antworten = 0
for i in range(anzahl_aufgaben):
    ist_richtig = stelle_aufgabe()
    if ist_richtig:
        anzahl_richtige_antworten += 1

prozent_richtige_antworten = anzahl_richtige_antworten / anzahl_aufgaben * 100
print(f'Sie haben {prozent_richtige_antworten:.1f} % der Aufgaben richtig gelöst.')

Übung 7.4

Schreiben Sie das Spiel “Zahlenraten”. Der Computer denkt sich eine Zahl zwischen 1 und 100 aus. Dann fragt er Sie solange, welche Zahl er sich ausgedacht hat, bis Sie die korrekte Zahl geraten haben. Außerdem gibt er Ihnen Hinweise, z.B. “Meine gedachte Zahl ist kleiner.” oder “Meine gedachte Zahl ist größer.” Sobald Sie die Zahl geraten haben, gibt der Computer aus, wie viele Versuche Sie gebraucht haben und beendet das Spiel.

Lösung

import numpy as np

zufallszahl = np.random.randint(1, 101)

versuche = 0
print('Ich habe mir eine Zahl zwischen 1 und 100 gedacht. Raten Sie, welche es ist!')
while True:
    versuche += 1
    antwort = int(input('Raten Sie meine Zahl: '))
    if antwort < zufallszahl:
        print('Meine gedachte Zahl ist größer.')
    elif antwort == zufallszahl:
        print(f'Hurra, Sie haben meine Zahl {zufallszahl} geraten und dazu {versuche} Versuche gebraucht.')
        break
    else:
        print('Meine gedachte Zahl ist kleiner.')

Übung 7.5

Programmieren Sie einen Random Walk. Ein Random Walk ist eine zufällige Irrfahrt. Der Turtle-Roboter soll zufällig eine Richtung bestimmen (0, 90, 180 oder 270 Grad) und 20 Schritte in diese Richtung gehen. Danach wird eine neue Richtung zufällig bestimmt und der Roboter bewegt sich erneut 20 Schritte.

Lassen Sie abfragen, wie viele Male diese Prozedur wiederholt werden soll. Testen Sie beispielsweise 100 mal. Verlässt der Roboter dabei das Turtle-Feld?

Lösung

import ColabTurtlePlus.Turtle as turtle
import numpy as np

turtle.clearscreen()

robo = turtle.Turtle()
robo.speed(13)

anzahl_wiederholungen = int(input('Wie oft soll der Roboter 20 Schritte laufen?'))

for i in range(anzahl_wiederholungen):
    zufallswinkel = np.random.randint(4) * 90
    robo.left(zufallswinkel)
    robo.forward(20)