Die Würfelregel im Brettspiel
AFB I–IIDie Spiele-AG programmiert die Regeln für ein neues Brettspiel. Nach jedem Wurf mit zwei Würfeln entscheidet dieses Programm:
w1 = int(input("Würfel 1? "))w2 = int(input("Würfel 2? "))if w1 == w2 and w1 >= 5: print("Superpasch: noch einmal würfeln und 10 Bonuspunkte")elif w1 == w2 or w1 + w2 == 7: print("Noch einmal würfeln")elif not (w1 == 1 or w2 == 1): print("Normal ziehen")else: print("Eine Runde aussetzen")
- Erstelle eine Übersicht mit den Ausgaben für die Würfe (6, 6), (3, 3), (2, 5), (4, 6), (1, 4) und (1, 6).
- Zeige, dass die Bedingung
not (w1 == 1 or w2 == 1)gleichbedeutend ist mitw1 != 1 and w2 != 1. - Ermittle, bei wie vielen der 36 möglichen Würfe man eine Runde aussetzen muss.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
- (6, 6) → Superpasch: noch einmal würfeln und 10 Bonuspunkte
- (3, 3) → Noch einmal würfeln
- (2, 5) → Noch einmal würfeln
- (4, 6) → Normal ziehen
- (1, 4) → Eine Runde aussetzen
- (1, 6) → Noch einmal würfeln
Bei (1, 6) greift schon der zweite Zweig, weil 1 + 6 = 7 ist — die Eins spielt dann keine Rolle mehr.
Erwartungshorizont zu Aufgabe b)
w1 == 1 or w2 == 1 ist genau dann falsch, wenn keiner der beiden Würfel eine 1 zeigt. not dreht das Ergebnis um: Die ganze Bedingung ist also genau dann wahr, wenn w1 keine 1 und w2 keine 1 ist — das ist w1 != 1 and w2 != 1. Kurz: not (A or B) ist dasselbe wie not A and not B.
Erwartungshorizont zu Aufgabe c)
Mindestens eine 1 zeigen 11 Würfe: (1, 1) bis (1, 6) und (2, 1) bis (6, 1). Davon greift bei (1, 1) schon der Pasch-Zweig und bei (1, 6) und (6, 1) die Summe 7. Es bleiben 11 − 3 = 8 Würfe: (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (3, 1), (4, 1), (5, 1).
Ausleihe in der Schulbibliothek
AFB II–IIIIn der Schulbibliothek gilt: Lehrkräfte dürfen immer ausleihen. Schülerinnen und Schüler brauchen einen gültigen Ausweis, dürfen keine offene Mahnung haben und höchstens 4 Bücher gleichzeitig ausgeliehen haben (vor der neuen Ausleihe also weniger als 5).
- Entwickle ein Programm, das die nötigen Angaben abfragt und „Ausleihe möglich“ oder „Ausleihe nicht möglich“ ausgibt. Verwende genau eine if-Bedingung mit logischen Operatoren.
- Untersuche, ob die beiden folgenden Varianten der Bedingung dasselbe leisten wie deine: (1)
rolle == "L" or ausweis == "j" and mahnungen == 0 and geliehen < 5und (2)(rolle == "L" or ausweis == "j") and mahnungen == 0 and geliehen < 5. - Nimm Stellung zu Jonas’ Vorschlag, die Bedingung so zu schreiben:
not (ausweis != "j" or mahnungen > 0 or geliehen >= 5) or rolle == "L".
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Mögliche Lösung:
# Ausleihe in der Schulbibliothekrolle = input("Schüler (S) oder Lehrkraft (L)? ")ausweis = input("Ausweis gültig (j/n)? ")mahnungen = int(input("Offene Mahnungen? "))geliehen = int(input("Bereits ausgeliehen? "))if rolle == "L" or (ausweis == "j" and mahnungen == 0 and geliehen < 5): print("Ausleihe möglich")else: print("Ausleihe nicht möglich")
Schüler (S) oder Lehrkraft (L)? S Ausweis gültig (j/n)? j Offene Mahnungen? 0 Bereits ausgeliehen? 2 Ausleihe möglich
Erwartungshorizont zu Aufgabe b)
Variante (1) ist gleichwertig: and bindet stärker als or, Python klammert also automatisch genau so wie in der Musterlösung. Die Klammern dort dienen nur der Lesbarkeit. Variante (2) ist falsch: Hier gelten die Mahnungs- und Bücherregel auch für Lehrkräfte. Eine Lehrkraft mit einer offenen Mahnung (rolle = "L", mahnungen = 1) bekäme „Ausleihe nicht möglich“.
Erwartungshorizont zu Aufgabe c)
Die Bedingung ist korrekt: not (A or B or C) ist wahr, wenn keiner der drei Hinderungsgründe vorliegt — also genau dann, wenn Ausweis gültig, keine Mahnung und weniger als 5 Bücher. Sie ist aber schwerer zu lesen, weil man die doppelte Verneinung im Kopf umdrehen muss. Ich würde die positive Formulierung mit and vorziehen; Jonas’ Variante ist höchstens sinnvoll, wenn man bewusst die Gründe für eine Ablehnung aufzählen will.
