Überraschende Fehler#
Einige Fehler aus der Aufgabe 1 der Klausur Python-101.
Eigentlich eine Aufgabe zum eingrooven, anspruchsvoller wird es später. Dennoch auch hier überraschende Fehler!
Es muss nicht sein, dass man hier Punkte verliert.
Wer sich hier nicht ganz sicher ist, hat das Einstiegslevel leider noch nicht erreicht.
Was kommt ‘raus?#
gegeben: ein Ausdruck. gesucht: Was kommt ‘raus?
“Hallo!” * 2#
# korrekt
"Hallo!" * 2
'Hallo!Hallo!'
in der Klausur beobachtete Fehler:
Hallo!Hallo!
(ohne Anführungszeichen)12
(zweimal die Länge?)'Hallo!', 'Hallo!'
"Hallo!""Hallo!"
[ 1, 2, 2, 3] * 2#
# korrekt
l = [ 1, 2, 2, 3]
l * 2
[1, 2, 2, 3, 1, 2, 2, 3]
in der Klausur beobachtete Fehler:
“wirft Fehler, denn Liste mal Zahl geht nicht”
[2, 4, 4, 6]
[1, 1, 2, 2, 2, 2, 3, 3]
(1+2+2+3) * 2 = 16
{ 2, 2, 3, 4} * 2#
Hier war in der Aufgabe allerdings schon eine ganz kleine Falle: In einem Set gibt es keine Zahl-Wiederholungen, und auch keine Ordnung oder Sortierung.
Also sieht s
eigentlich so aus:
s = { 2, 2, 3, 4}
s
{2, 3, 4}
Insbesondere macht s * 2
kein Sinn. Python wirft also auch einen Fehler:
# korrekt
s = { 2, 2, 3, 4}
# s * 2
# unsupported operand type(s) for *: 'set' and 'int'
In der Klausur gesehen:
{2, 2, 2, 2, 3, 3, 4, 4}
: Ist das ein Set?
1 + 2 * pi#
# korrekt
pi = 3.14
1 + 2 * pi
7.28
beobachtete Werte:
10,28
9,42
Slicing#
gegeben: Ein String, z.B. `s = “Hallo!”
s = "Hallo!"
Aufgabe: Welche Ausgabe wird durch die folgenden Ausdrücke erzeugt?
s[2:3]#
Das war die Einstiegsfrage. Meine (JB) Annahme: Es gibt niemanden, der nicht weiß, dass bei einem Slice die erste Zahl ‘drinn ist, die zweite draußen (mathematisch ein sog. halboffenes Intervall).
# korrekt
s[2:3]
'l'
In der Klausur beobachtete Fehler:
l
: ohne Anführungszeichen^'ll'
: nicht verstanden, dass der erste Slicing-Parameter ‘dinn ist, der zweite nicht mehr['l']
ll
l,l
(l, l)
A
lo
set( s[2:4] )#
# korrekt
set(s[2:4])
{'l'}
Beobachtete Fehler:
'l'
: ohne Mengenklammernl
: ohne Anführungszeichen und ohne Mengenklammern'llo'
{l,l}
{'l','l'}
{'l,l'}
(l, o)
: warum ein Tupel? und ohne Anführungszeichen.("A","L")