Ü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 Mengenklammern

  • l: ohne Anführungszeichen und ohne Mengenklammern

  • 'llo'

  • {l,l}

  • {'l','l'}

  • {'l,l'}

  • (l, o): warum ein Tupel? und ohne Anführungszeichen.

  • ("A","L")