Übungen

Aufgabe 1: Zahl-Objekte und ihre Identitätsnummern in Python

Analysiere den folgenden Python-Dialog. Was fällt auf, wenn man die Identitätsnummern von Zahlen vom Typ int bzw. vom Typ float vergleicht?

>>> id(2)
9721412
>>> type(2)
<type 'int'="">
>>> id(1+1)
9721412
>>> type(1+1)
<type 'int'="">
>>> id(1.0)
12365664
>>> type(1.0)
<type 'float'="">
>>> id(1.0)
10514784
>>> type(1.0)
<type 'float'="">
</type></type></type></type>

Aufgabe 2: Kopieren von Listen

Die von der Variablen L verwaltete Liste soll kopiert und anschließend verändert werden. Welche Version ist korrekt?

L = [0, 1, 2, 3, 4, 5]

M = L
i = 0
while i<len(m): +="" 1="" <="" code="" i="i+1" m[i]="M[i]" print(l)="" print(m)="">
</len(m):>

oder

L = [0, 1, 2, 3, 4, 5]

M = L[:]
i = 0
while i<len(m): +="" 1="" <="" code="" i="i+1" m[i]="M[i]" print(l)="" print(m)="">
</len(m):>

Warum zeigen die beiden Versionen ein unterschiedliches Verhalten?

Aufgabe 3: Ein Listenelement durch ein anderes ersetzen

Gegeben sind die Deklarationen der Funktionen entfernen und einfuegen.

def entfernen(L, i):
    H = L[:i] + L[(i+1):]
    return H

def einfuegen(L, x, i):
    H = L[:i] + [x] + L[i:]
    return H

# Test

L = [0, 1, 2, 3, 4]
print(id(L))
L[1] = 5
print(L)
print(id(L))

L = [0, 1, 2, 3, 4]
print(id(L))
L = einfuegen(entfernen(L, 1), 5, 1)
print(L)
print(id(L))

Welche Ausgaben erwartest du hier? Überzeuge dich, ob deine Erwartungen zutreffen. Erkläre die Ergebnisse.

Aufgabe 4: Ein Listenelement entfernen und wieder einfügen

Das folgende Testprogramm zeigt zwei Möglichkeiten, wie man ein Listenelement durch ein anderes ersetzt.

# Test

L = [0, 1, 2, 3, 4]
print id(L)
L = einfuegen(entfernen(L, 1), 5, 1)
print(L)
print(id(L))

L = [0, 1, 2, 3, 4]
print(id(L))
L.__delitem__(1)
L.insert(1, 5)
print(L)
print(id(L))

Welche Ausgaben erwartest du hier? Überzeuge dich, ob deine Erwartungen zutreffen. Erkläre die Ergebnisse.

X

Fehler melden

X

Suche