Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:sbt:informatik:glf22:python:little-programming-tasks [2022/12/09 07:35] – Karlheinz Schubert | lehrkraefte:sbt:informatik:glf22:python:little-programming-tasks [2022/12/09 21:45] (current) – Karlheinz Schubert | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Kleine Programmieraufgaben ====== | ||
| + | ===== Caesar Verschlüsselung ===== | ||
| + | | ||
| + | <WRAP center round todo> | ||
| + | - Schau dir den Verschlüsselungsalgorithmus an, der nach dem römischen Kaiser Caesar benannt ist [[https:// | ||
| + | - Schreibe ein kleines Programm, das nach dem Veschiebewert (Quelltext) fragt und dann in einer Endlosschleife Texte verschlüsselt. Die Endlosschleife wird mit einer leeren Eingabe beendet.\\ | ||
| + | Zur Vereinfachung: | ||
| + | |||
| + | <hidden Hinweis1> | ||
| + | <code python> | ||
| + | Satz = input(' | ||
| + | </ | ||
| + | </ | ||
| + | <hidden Hinweis2> | ||
| + | <code python> | ||
| + | while True: | ||
| + | Eingabe = input(' | ||
| + | if len(Eingabe) == 0: | ||
| + | break | ||
| + | print(' | ||
| + | </ | ||
| + | </ | ||
| + | <hidden Hinweis3> | ||
| + | <code python> | ||
| + | abc = [' | ||
| + | ' | ||
| + | |||
| + | shift = int(input(" | ||
| + | |||
| + | while True: | ||
| + | quelltext = input(" | ||
| + | if len(quelltext) == 0: | ||
| + | break | ||
| + | code = "" | ||
| + | for buchstabe in quelltext: | ||
| + | index = abc.index(buchstabe) | ||
| + | indexCode = index + shift | ||
| + | # if indexCode > len(abc) - 1: | ||
| + | # | ||
| + | indexCode = indexCode % len(abc) | ||
| + | code += abc[indexCode] | ||
| + | print(code) | ||
| + | </ | ||
| + | </ | ||
| + | ---- | ||
| + | <hidden Expertenaufgabe> | ||
| + | * Schreibe ein Verschlüsselungsprogramm, | ||
| + | |||
| + | <hidden Hinweis> | ||
| + | <code python> | ||
| + | EingabeDatei = open(' | ||
| + | AusgabeDatei = open(' | ||
| + | for line in EingabeDatei.readlines(): | ||
| + | lineX = verschluessele(line) | ||
| + | AusgabeDatei.write(lineX) | ||
| + | AusgabeDatei.close() | ||
| + | EingabeDatei.close() | ||
| + | </ | ||
| + | </ | ||
| + | * Ergänze das Programm so, dass du nach dem Dateinamen gefragt wirst und beliebig viele Dateien nacheinander verschlüsseln kannst. | ||
| + | </ | ||
| + | <hidden Hinweis3> | ||
| + | * Möglichkeit zur Verschlüsselung von beliebigen UniCode Zeichen | ||
| + | <code python> | ||
| + | c_unicode = ord(" | ||
| + | C_unicode = ord(" | ||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | character_65 = chr(65) | ||
| + | character_100 = chr(220) | ||
| + | print(" | ||
| + | print(" | ||
| + | # ausserhalb des englischen Alphabeths: | ||
| + | Ue_unicode = ord(" | ||
| + | print(" | ||
| + | character_220 = chr(220) | ||
| + | print(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Was für eine Note muss ich schreiben, damit ich über einen Schnitt von x.y komme? ===== | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Wenn du nach einigen Prüfungen Noten hast und einen bestimmten Durchschnitt erreichen möchtest, dann kannst du die ganz leicht ausrechnen (lassen), welche Note du als nächstes schreiben musst. | ||
| + | - Schreibe ein Programm, dass deine bisherigen Noten in einem Feld enthält, dich nach dem gewünschten Durchschnitt fragt und dann die Mindesnote ausgibt, die du im nächsten Test erreichen solltest. | ||
| + | - Verbessere das Programm so, dass du zusätzlich eingeben kannst, wieviele Tests noch anstehen, also wie viele Noten du noch bekommen kannst. | ||
| + | |||
| + | <hidden Hinweis1> | ||
| + | <code python> | ||
| + | while True: | ||
| + | Eingabe = input(' | ||
| + | if len(Eingabe) == 0: | ||
| + | break | ||
| + | # Umwandlung der Texteingabe in eine Dezimalzahl: | ||
| + | WunschNote = float(Eingabe) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden Hinweis2> | ||
| + | <code python> | ||
| + | Noten = [4.5, 5, 3.75, 5.5] | ||
| + | Durchschnitt_ungerundet = sum(Noten)/ | ||
| + | Durchschnitt = round(sum(Noten)/ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Vokabeltrainer ===== | ||
| + | | ||
| + | <WRAP center round todo> | ||
| + | - Lege eine Liste mit Vokabeln an: | ||
| + | <code python> | ||
| + | Vokabeln = [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| + | </ | ||
| + | | ||
| + | Die Vokabeln sind in Paaren hintereinander eingetragen. | ||
| + | |||
| + | - Frage alle Variablen der Reihe nach ab und kontrolliere, | ||
| + | - Erweitere das Programm um einen Abragemodus: | ||
| + | - Ergänze eine Hilfefunktion: | ||
| + | |||
| + | <hidden Hinweis1> | ||
| + | Da die Variablen in Paaren angeordnet sind, müssen die Indizees vielfache von zwei sein: Die abgefragte Variable 2n+0 und die Antwort 2n+1. | ||
| + | </ | ||
| + | <hidden Hinweis2> | ||
| + | <code python> | ||
| + | Antwort = input(f' | ||
| + | </ | ||
| + | </ | ||
| + | ---- | ||
| + | <hidden Expertenaufgabe1> | ||
| + | * Baue das Programm so um, dass du die Übersetzungsrichtung wählen kannst. | ||
| + | </ | ||
| + | <hidden Expertenaufgabe2> | ||
| + | * Erweitere das Programm so, dass du auswertest, wie viel richtige und falsche Antworten du gegeben hast. | ||
| + | </ | ||
| + | <hidden Expertenaufgabe2> | ||
| + | * Erweitere das Programm so, dass du es für mehr als zwei Sprachen verwenden kannst. | ||
| + | </ | ||
| + | <hidden Lösung> | ||
| + | <code python> | ||
| + | """ | ||
| + | Vokabeltrainer | ||
| + | """ | ||
| + | from random import randint | ||
| + | |||
| + | Vokabeln = [ | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ] | ||
| + | Richtige = [] | ||
| + | Zaehler_richtig = 0 | ||
| + | Zaehler_falsch = 0 | ||
| + | while True: | ||
| + | Mode = input(' | ||
| + | if Mode == ' | ||
| + | break | ||
| + | print(' | ||
| + | |||
| + | while True: | ||
| + | index = randint(0, len(Vokabeln)// | ||
| + | # | ||
| + | if index in Richtige: | ||
| + | if len(Richtige)==len(Vokabeln)// | ||
| + | break | ||
| + | continue | ||
| + | deutsch = Vokabeln[2*index] | ||
| + | englisch = Vokabeln[2*index+1] | ||
| + | if Mode == ' | ||
| + | Frage = deutsch | ||
| + | Antwort = englisch | ||
| + | else: | ||
| + | Frage = englisch | ||
| + | Antwort = deutsch | ||
| + | Test = input(f' | ||
| + | if len(Test) == 0: | ||
| + | break | ||
| + | if Antwort == Test: | ||
| + | print(' | ||
| + | Zaehler_richtig += 1 | ||
| + | Richtige.append(index) | ||
| + | else: | ||
| + | print(' | ||
| + | Zaehler_falsch += 1 | ||
| + | |||
| + | print(f' | ||
| + | print(' | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||