Die niedrigste jemals gegebene Bertung ist: 2.5
Die hoechste jemals gegebene Bertung ist: 5.0
b) Nennen Sie alle Bewertungen für Film 1
Lösung
bewertungen_film_1 = bewertungen[np.where(bewertungen[:,0]==1)]print("Bewertungen für Film 1:\n", bewertungen_film_1)
Bewertungen für Film 1:
[[ 1. 101. 4.5]
[ 1. 102. 3. ]]
c) Nennen Sie alle Bewertungen von Person 101
Lösung
bewertungen_101 = bewertungen[np.where(bewertungen[:,1]==101)]print("Bewertungen von Person 101:\n", bewertungen_101)
Bewertungen von Person 101:
[[ 1. 101. 4.5]
[ 2. 101. 2.5]
[ 3. 101. 5. ]]
d) Berechnen Sie die mittlere Bewertung für jeden Film und geben Sie diese nacheinander aus
Lösung
for ID in [1, 2, 3]: mittelwert = np.mean(bewertungen[np.where(bewertungen[:,0]==ID),2])print("Die Mittlere Bewertung für Film", ID, "beträgt:", mittelwert)
Die Mittlere Bewertung für Film 1 beträgt: 3.75
Die Mittlere Bewertung für Film 2 beträgt: 3.25
Die Mittlere Bewertung für Film 3 beträgt: 4.166666666666667
f) Finden Sie die Person mit den meisten Bewertungen
Lösung
einzigartige_person, anzahl = np.unique(bewertungen[:, 1],return_counts=True)meist_aktiver_person = einzigartige_person[np.argmax(anzahl)]print("Personen mit den meisten Bewertungen:", meist_aktiver_person)
Personen mit den meisten Bewertungen: 101.0
g) Nennen Sie alle Filme mit einer Wertung von 4 oder besser.
Lösung
index_bewertung_besser_vier = bewertungen[:,2] >=4print("Filme mit einer Wertung von 4 oder besser:")print(bewertungen[index_bewertung_besser_vier,:])
Filme mit einer Wertung von 4 oder besser:
[[ 1. 101. 4.5]
[ 2. 103. 4. ]
[ 3. 101. 5. ]
[ 3. 105. 4. ]]
h) Film Nr. 4 ist erschienen. Der Film wurde von Person 102 mit einer Note von 3.5 bewertet. Fügen Sie diesen zur Datenbank hinzu.
i) Person 102 hat sich Film Nr. 1 nochmal angesehen und hat das Ende jetzt doch verstanden. Dementsprechend soll die Berwertung jetzt auf 5.0 geändert werden.
In dieser Aufgabe wollen wir Text sowohl ver- als auch entschlüsseln.
Jedes Zeichen hat über die sogenannte ASCII-Tabelle einen Zahlenwert zugeordnet.
Buchstabe
ASCII Code
Buchstabe
ASCII Code
a
97
n
110
b
98
o
111
c
99
p
112
d
100
q
113
e
101
r
114
f
102
s
115
g
103
t
116
h
104
u
117
i
105
v
118
j
106
w
119
k
107
x
120
l
108
y
121
m
109
z
122
Tabelle 10.1: Ascii-Tabelle
Der Einfachheit halber ist im Folgenden schon der Code zur Umwandlung von Buchstaben in Zahlenwerten und wieder zurück aufgeführt. Außerdem beschränken wir uns auf Texte mit kleinen Buchstaben.
Ihre Aufgabe ist nun die Zahlenwerte zu verändern.
Zunächste wollen wir eine einfache Caesar-Chiffre anwenden. Dabei werden alle Buchstaben um eine gewisse Anzahl verschoben. Ist Beispielsweise der der Verschlüsselungswert “1” wird aus einem A ein B, einem M, ein N. Ist der Wert “4” wird aus einem A ein E und aus einem M ein Q. Die Verschiebung findet zyklisch statt, das heißt bei einer Verschiebung von 1 wird aus einem Z ein A.
import numpy as np# Funktion, die einen Buchstaben in ihren ASCII-Wert umwandeltdef buchstabe_zu_ascii(c):return np.array([ord(c)])# Funktion, die einen ASCII-Wert in den passenden Buchstaben umwandeltdef ascii_zu_buchstabe(a):returnchr(a)
1. Überlegen Sie sich zunächst wie man diese zyklische Verschiebung mathematisch ausdrücken könnte (Hinweis: Modulo Rechnung)
2. Schreiben Sie Code der mit einer Schleife alle Zeichen umwandelt.
Zunächst sollen alle Zeichen in Ascii Code umgewandelt werden. Dann wird die Formel auf die Zahlenwerte angewendet und schlussendlich in einer dritten schleife wieder alle Werte in Buchstaben übersetzt.
Lösung
import numpy as np# Funktion, die einen Buchstaben in ihren ASCII-Wert umwandeltdef buchstabe_zu_ascii(c):returnord(c)# Funktion, die einen ASCII-Wert in den passenden Buchstaben umwandeltdef ascii_zu_buchstabe(a):returnchr(a)klartext ="abrakadabra"versatz =3umgewandelter_text = []verschluesselte_zahl = []verschluesselter_text= []for buchstabe in klartext: umgewandelter_text.append(buchstabe_zu_ascii(buchstabe))print(umgewandelter_text)for zahl in umgewandelter_text: verschluesselt = (zahl -97+ versatz) %26+97 verschluesselte_zahl.append(verschluesselt)print(verschluesselte_zahl)for zahl in verschluesselte_zahl: verschluesselter_text.append(ascii_zu_buchstabe(zahl))print(verschluesselter_text)
3. Ersetzen Sie die Schleife, indem Sie die Rechenoperation mit einem NumPy-Array durchführen
Lösung
import numpy as np# Funktion, die einen Buchstaben in ihren ASCII-Wert umwandeltdef buchstabe_zu_ascii(c):returnord(c)# Funktion, die einen ASCII-Wert in den passenden Buchstaben umwandeltdef ascii_zu_buchstabe(a):returnchr(a)klartext ="abrakadabra"versatz =3umgewandelter_text = []verschluesselte_zahl = []verschluesselter_text= []for buchstabe in klartext: umgewandelter_text.append(buchstabe_zu_ascii(buchstabe))print(umgewandelter_text)umgewandelter_text = np.array(umgewandelter_text)verschluesselte_zahl = (umgewandelter_text -97+ versatz) %26+97print(verschluesselte_zahl)for zahl in verschluesselte_zahl: verschluesselter_text.append(ascii_zu_buchstabe(zahl))print(verschluesselter_text)
4. Schreiben sie den Code so um, dass der verschlüsselte Text entschlüsselt wird.
Lösung
import numpy as np# Funktion, die einen Buchstaben in ihren ASCII-Wert umwandeltdef buchstabe_zu_ascii(c):returnord(c)# Funktion, die einen ASCII-Wert in den passenden Buchstaben umwandeltdef ascii_zu_buchstabe(a):returnchr(a)versatz =3umgewandelter_text = []verschluesselte_zahl = []entschluesselter_text= []for buchstabe in verschluesselter_text: umgewandelter_text.append(buchstabe_zu_ascii(buchstabe))print(umgewandelter_text)umgewandelter_text = np.array(umgewandelter_text)verschluesselte_zahl = (umgewandelter_text -97- versatz) %26+97print(verschluesselte_zahl)for zahl in verschluesselte_zahl: entschluesselter_text.append(ascii_zu_buchstabe(zahl))print(entschluesselter_text)