Mathematische Operatoren
…für Auftragshacker
Hier kommen ein paar Programmieraufträge für die Sommerferien 2023
Farbcode:
Leichte Aufträge - Mittelschwere Aufträge - Schwere Aufträge
Auftrag 1 : Code vereinfachen
Kannst du den folgenden Code vereinfachen und eleganter schreiben?
#Aufgabe Code vereinfachen
print("Gib eine Note (1-6) ein: ", end="")
note = int(input())
if note == 1:
print("Note",note, "(sehr gut)")
elif note == 2:
print("Note",note, "(gut)")
elif note == 3:
print("Note",note, "(befriedigend)")
elif note == 4:
print("Note",note, "(ausreichend)")
elif note == 5:
print("Note",note, "(mangelhaft)")
elif note == 6:
print("Note",note, "(ungenügend)")
else:
print("Eingabefehler!")
-
Lösung
-
Bist du wirklich sicher?
-
Tipp: Verwende eine Liste für die Begriffe von sehr gut bis ungenügend
z. B. so:
Notenliste = [”sehr gut”, “gut”,...]-
Noch nicht genug? Dann kommt jetzt die gesamte Lösung:
print("Gib eine Note (1-6) ein: ", end="") note = int(input()) notenliste = ["sehr gut", "gut", "befriedigend","ausreichend","mangelhaft","ungenügend"] print("Note", note, (notenliste[note-1]))
-
-
-
Auftrag 2: Supermarkt-Software
Früher mussten Kassierer in einem Supermarkt sehr gute Kopfrechner sein. Nehmen wir an, ein Kunde kauft Waren im Wert von 11,99€. In seinem Geldbeutel hat er aber nur einen 20-Euro-Schein sowie eine 2-Euro-Münze. Der Kunde gibt der Kassiererin 22€. Die Kassiererin musste also rechnen: 22€ - 11,99€ = 10,01€. Der Kunde bekommt 10 Euro und einen Cent zurück.
Zwischenfrage: Warum hat der Kunde 22€ gegeben und nicht einfach nur seinen 20€-Schein?
Dein Auftrag: Entwickle eine Software, die für jeden beliebigen Kaufpreis und für beliebige Beträge, die der Kunde dem Kassierer gibt, das Rückgeld berechnet.
-
Lösung
Eine vollständige Lösung wird hier nicht angezeigt. Aber noch ein paar Hinweise:
- verwende den Datentyp
float - unterscheide 3 Fälle:
- der Kunde gibt passendes Geld
- der Kunde gibt zu viel Geld
- der Kunde gibt zu wenig Geld
- verwende den Datentyp
Auftrag 3: Kino-Ticketautomat
Im Trostberger Kino wurde ein Ticketautomat angeschafft. Der muss aber noch programmiert werden. Der Inhaber will die Eintrittspreise nach folgenden Regeln gestalten:
- normaler Preis: 15€
- Kinder bis 8 Jahre: frei
- Schüler und Azubis bekommen werktags 10% Preisnachlass, sie müssen aber ihren Schüler/-Azubiausweis vorzeigen
- Schüler und Azubis bekommen sonntags 50% Preisnachlass, sie müssen aber ihren Schüler/-Azubiausweis vorzeigen
Außerdem soll das Programm anzeigen, dass es sonntags um 13 Uhr, 16 Uhr und 20 Uhr Vorstellungen gibt, an den übrigen Tagen aber nur um 16:30 Uhr und um 20 Uhr.
Da du Hacker bist, baust du dir natürlich eine Hintertür ins Programm ein, mit der DU immer 50% Nachlass bekommst, und zwar wenn man als Alter die Ziffern 1010001 eingibt.
Hier zwei Screenshots vom Display des Automaten:


-
Lösung
Nur ein Hinweis:
Das Programm muss den Wochentag ermitteln können. Verwende dazu folgenden Code:
from datetime import datetime day = datetime.today().weekday() #die Variable day speichert den Wochentag als Zahl (0-6) # 0 = Montag, 1 = Dienstag, ..., 6 = Sonntag #Mit einer Liste kannst du dir den aktuellen Wochentag anzeigen lassen: liste =["Montag", "Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"] print("Heute ist", liste[day])
Auftrag 4: Gesamtnote berechnen
Schüler wollen oft wissen, wie sie gerade in einem bestimmten Fach “stehen”. Gemeint ist damit, welche Gesamtnote sie gerade haben. Nehmen wir an, ein Schüler hat folgende Noten:
| Schulaufgabe | 4 |
|---|---|
| 1. Ex | 1 |
| 2. Ex | 4 |
| Abfrage | 5 |
Schulaufgaben zählen doppelt, alle anderen Noten einfach. Der Schüler soll also folgende Noten in das Programm eingeben: 4 4 1 4 5
Von diesen Noten bildet man nun die Summe: 4 + 4 + 1 + 4 + 5 = 18
Diese Summe teilt man durch die Anzahl der Noten, hier also 5: 18/5 = 3,6
Wenn das Ergebnis größer als x,5 ist, wird aufgerundet, sonst abgerundet.
In unserem Beispiel bedeutet 3,6, dass der Schüler auf einer (guten) 4 steht.
Schreibe ein Programm, in das man beliebig viele Noten eingeben kann und anschließend die aktuelle Gesamtnote erhält.
Der Programmdialog könnte so aussehen:

-
Lösung
Nee, keine Lösung! Aber ein paar Hinweise:
Das Programm erkennt auch falsche Eingaben!
- Du siehst in dem Bild, dass die Noten in einer Liste gespeichert werden, die hier zur Kontrolle auch nach jeder Eingabe angezeigt wird.
- Note 3,4 bedeutet Gesamtnote 3.
- Note 3,49 bedeutet Gesamtnote 3.
- Note 3,5 bedeutet Gesamtnote 3.
- Note 3,8 bedeutet Gesamtnote 4.
- Note 3,51 bedeutet Gesamtnote 4.
Noch ein Tipp?
Die “Grenze” liegt also immer bei
,5Verwende aber im Code einen
.statt dem,Und:
//liefert den ganzzahligen Anteil einer Division. Siehe auch
Auftrag 5: E-Mail-Adresse ausgeben
Viele Schüler:innen unserer Schule kennen ihre E-Mail-Adresse nicht. Schreibe ein Programm, bei dem ein Schüler seinen Namen eingibt und dann seine korrekte E-Mailadresse angezeigt bekommt.
Bildschirmdialog:

-
Lösung
Keine Lösung, nur ein Hinweis: Umlaute (ä,ö,ü) sind erlaubt.
Auftrag 6: Begrüßung in Fremdsprachen
Das Programm begrüßt den User wahlweise in fünf Sprachen. Die Ausgabe sieht so aus:

-
Lösung
Hilfe beim Übersetzen bekommst du hier mittels AI/KI:
DeepL Translate: The world's most accurate translator
-
Hier der Code
Bist du dir wirklich ganz sicher?
-
Okay:
#begruessung in fremdsprachen # \n sorgt dafür, dass genau an dieser Stelle eine neue Zeile beginnt print("Englisch(e)", "\nFranzösisch(f)", "\nSpanisch(s)", "\nHebräisch(h)", "\nLateinisch(l)") print() print("Wähle eine Sprache: ", end = "") ant = input() print() if ant == "e": print("Hello and good morning!") elif ant == "f": print("Bon jour!") elif ant == "s": print("Buenas dias!") elif ant == "h": print("Shalom!") elif ant == "l": print("Salve!") else: print("Diese Sprache kenne ich nicht!")
-
-
Auftrag 7: Kartendruckerei
Ein Programm erstellt automatisch Einladungskarten zu (d)einer Geburtstagsfeier. Dazu braucht man nur die Namen seiner Gäste (beliebig viele) eintragen, das ist alles.
Sieh dir den Screenshot an und schreibe den Code.

-
Lösung
Speicher die Namen in einer Liste, nicht in Variablen.
Auftrag 8: Wiederholungsaufgabe
Schreibe ein Programm, das ein bestimmtes Einmaleins ausgibt, z.B. das 5er Einmaleins.
Der Benutzer kann am Anfang des Programms eingeben, welches Einmaleins er möchte.
Auftrag 9: Wiederholungsaufgabe
Schreibe ein Programm, das das gesamte kleine Einmaleins ausgibt. Verwende dazu eine for-Schleife.
Auftrag 10: Wiederholungsaufgabe
Schreibe ein Programm, bei dem der Benutzer eine Zahl erraten muss. Das Programm “denkt” sich eine geheime Zufallszahl zwischen 1 und 100 aus. Der Benutzer muss diese Zahl erraten. Dazu gibt er eine Zahl ein. Das Programm meldet dann, ob diese Zahl zu groß, zu klein oder richtig ist.
Variante 1:
Baue zusätzlich einen Zähler für die benötigten Versuche des Benutzers ein.
Variante 2:
Begrenze die Versuche des Benutzers auf zum Beispiel 7.
/Auftrag 11: Manipulation
Dein Programm soll folgende Fähigkeiten haben:
Es soll dem Benutzer eine Aufgabe stellen, in bestimmten Fällen aber gezielt FALSCHE Antworten liefern.