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 08:14] Karlheinz Schubert |
lehrkraefte:sbt:informatik:glf22:python:little-programming-tasks [2022/12/09 22:45] (current) Karlheinz Schubert |
||
---|---|---|---|
Line 5: | Line 5: | ||
<WRAP center round todo> | <WRAP center round todo> | ||
- Schau dir den Verschlüsselungsalgorithmus an, der nach dem römischen Kaiser Caesar benannt ist [[https:// | - 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. | + | - 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> | <hidden Hinweis1> | ||
+ | <code python> | ||
Satz = input(' | Satz = input(' | ||
+ | </ | ||
</ | </ | ||
<hidden Hinweis2> | <hidden Hinweis2> | ||
Line 19: | Line 22: | ||
</ | </ | ||
</ | </ | ||
+ | <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> | <hidden Expertenaufgabe> | ||
- | - Schreibe ein Verschlüsselungsprogramm, | + | * Schreibe ein Verschlüsselungsprogramm, |
<hidden Hinweis> | <hidden Hinweis> | ||
Line 36: | Line 59: | ||
</ | </ | ||
</ | </ | ||
+ | * 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(" | ||
+ | </ | ||
+ | </ | ||
</ | </ | ||
Line 45: | Line 86: | ||
<WRAP center round todo> | <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. | 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 ===== | ||
| | ||
- | * (a) Schreibe ein Programm, dass deine bisherigen Noten in einem Feld enthält, dich nach dem gewünschten Durchschnitt fragt und dann die Mindesnote ausgibt. | + | <WRAP center round todo> |
+ | - Lege eine Liste mit Vokabeln an: | ||
+ | <code python> | ||
+ | Vokabeln = [ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | Die Vokabeln sind in Paaren hintereinander eingetragen. | ||
- | * (b) Verbessere das Programm | + | - 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(' | ||
+ | |||
+ | </ | ||
+ | </ | ||
</ | </ |