====== Kleine Programmieraufgaben ======
===== Caesar Verschlüsselung =====
- Schau dir den Verschlüsselungsalgorithmus an, der nach dem römischen Kaiser Caesar benannt ist [[https://de.wikipedia.org/wiki/Caesar-Verschl%C3%BCsselung|Wikipedia: Caesar-Verschlüsselung]].
- 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: Nutze nur kleine Buchstaben.
Satz = input('Quelltext: ')
while True:
Eingabe = input('Quelltext: ')
if len(Eingabe) == 0:
break
print('fertig')
abc = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
shift = int(input("Offset: "))
while True:
quelltext = input("Quelltext: ")
if len(quelltext) == 0:
break
code = ""
for buchstabe in quelltext:
index = abc.index(buchstabe)
indexCode = index + shift
# if indexCode > len(abc) - 1:
# indexCode -= len(abc)
indexCode = indexCode % len(abc)
code += abc[indexCode]
print(code)
----
* Schreibe ein Verschlüsselungsprogramm, dass eine Quelltextdatei 'text.txt' einliest und als Datei 'text_encrypted.txt' auf die Festplatte schreibt.
EingabeDatei = open('text.txt','r')
AusgabeDatei = open('text_encrypted.txt','w')
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.
* Möglichkeit zur Verschlüsselung von beliebigen UniCode Zeichen
c_unicode = ord("c")
C_unicode = ord("C")
print("Unicode von 'c' =", c_unicode)
print("Unicode von 'C' =", C_unicode)
character_65 = chr(65)
character_100 = chr(220)
print("Unicode 65 steht für", character_65)
print("Unicode 100 steht für", character_100)
# ausserhalb des englischen Alphabeths:
Ue_unicode = ord("Ü")
print("Unicode von 'Ü' =", Ue_unicode)
character_220 = chr(220)
print("Unicode 220 steht für", character_220)
===== Was für eine Note muss ich schreiben, damit ich über einen Schnitt von x.y komme? =====
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.
while True:
Eingabe = input('Gewünschter Schnitt: ')
if len(Eingabe) == 0:
break
# Umwandlung der Texteingabe in eine Dezimalzahl:
WunschNote = float(Eingabe)
Noten = [4.5, 5, 3.75, 5.5]
Durchschnitt_ungerundet = sum(Noten)/len(Noten)
Durchschnitt = round(sum(Noten)/len(Noten), 2)
===== Vokabeltrainer =====
- Lege eine Liste mit Vokabeln an:
Vokabeln = [
"lesen","read",
"Apfel","apple",
"geben","give"
]
Die Vokabeln sind in Paaren hintereinander eingetragen.
- Frage alle Variablen der Reihe nach ab und kontrolliere, ob die Antwort richtig war.
- Erweitere das Programm um einen Abragemodus: a) Abfrage wie unter 1. und b) Zufallsabrage. Beende dies Programm wenn du eine leere Antwort eingibst.
- Ergänze eine Hilfefunktion: Gibst du als Anwort ein '?' ein, so wird die die richtige Antwort zur Frage angezeigt.
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.
Antwort = input(f'Übersetze "{Vokabel}": ')
----
* Baue das Programm so um, dass du die Übersetzungsrichtung wählen kannst.
* Erweitere das Programm so, dass du auswertest, wie viel richtige und falsche Antworten du gegeben hast.
* Erweitere das Programm so, dass du es für mehr als zwei Sprachen verwenden kannst.
"""
Vokabeltrainer
"""
from random import randint
Vokabeln = [
'lesen', 'read',
'Apfel', 'apple',
'geben', 'give',
'lächeln', 'smile',
'rennen', 'run'
]
Richtige = []
Zaehler_richtig = 0
Zaehler_falsch = 0
while True:
Mode = input('de - Deutsch -> Englisch\ned - Englisch -> Deutsch: ')
if Mode == 'ed' or Mode == 'de':
break
print('Unbekannter Mode, versuche es noch einmal!')
while True:
index = randint(0, len(Vokabeln)//2 - 1)
#print(f'{index} of {len(Vokabeln)//2 - 1}')
if index in Richtige:
if len(Richtige)==len(Vokabeln)//2:
break
continue
deutsch = Vokabeln[2*index]
englisch = Vokabeln[2*index+1]
if Mode == 'de':
Frage = deutsch
Antwort = englisch
else:
Frage = englisch
Antwort = deutsch
Test = input(f'Übersetze "{Frage}" ▶ ')
if len(Test) == 0:
break
if Antwort == Test:
print('richtig')
Zaehler_richtig += 1
Richtige.append(index)
else:
print('falsch')
Zaehler_falsch += 1
print(f'Du hattest {Zaehler_richtig} richtige und {Zaehler_falsch} falsche {"Antwort" if Zaehler_falsch==1 else "Antworten"}.')
print('fertig')