Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Erkundung - Experimente mit Variablen

Kann das gut gehen?

Eine Funktion d soll Zahlen verdoppeln. Im Folgenden werden verschiedene Vorschläge zur Implementierung der Funktion gemacht. Geht das jeweils gut aus?

Vorschlag 1:

def d(x):
    y = x + x
    return y

# Test
a = 2
print(a)
a = d(a)
print(a)

Vorschlag 2:

def d(x):
    a = x + x
    return a

# Test
a = 2
print(a)
a = d(a)
print(a)

Vorschlag 3:

def d(a):
    y = a + a
    return y

# Test
a = 2
print(a)
a = d(a)
print(a)

Vorschlag 4:

def d(a):
    a = a + a
    return a

# Test
a = 2
print(a)
a = d(a)
print(a)

Aufgabe 1

(a) Schaue dir zunächst die verschiedenen Vorschläge zur Implementierung der Funktion d genau an. Bei welchen Vorschlägen vermutest du, dass es zu Schwierigkeiten kommt?

(b) Teste anschließend die Vorschläge. Benutze hierzu den Online Python Tutor.

Hier findest du Vorschlag 1 vorbereitet für die Verwendung in Python Tutor:

Kopiere den Python-Quelltext in das Eingabefeld und klicke anschließend auf [Visualize Execution]. Die Anweisungen des Python-Programms kannst du dann Schritt für Schritt ausführen. Beobachte die jeweilige Wirkung der Anweisungen.

interpreter

Aufgabe 2

Erweitere in den oben gezeigten Vorschlägen die Funktionsdefinition und das Testprogramm jeweils um die Aufrufe print(locals()) bzw. print(globals()):

def d(x):
    y = x + x
    print(locals())
    return y

# Test
a = 2
print(a)
print(globals())
a = d(a)
print(a)

Teste die Vorschläge noch einmal. Kannst du aus den Ergebnissen einen Erklärungsansatz für das Verhalten der vier Implementierungsvorschläge gewinnen?

Nochmal: Kann das gut gehen?

Eine Prozedur d soll eine vorgegebene Zahl verdoppeln. Im Folgenden werden zwei Vorschläge zur Implementierung gemacht. Geht das jeweils gut aus?

Vorschlag 1:

def d():
    a = a + a

# Test
a = 2
print(a)
d()
print(a)

Vorschlag 2:

def d():
    global a
    a = a + a

# Test
a = 2
print(a)
d()
print(a)

Aufgabe 3

(a) Schaue dir zunächst die verschiedenen Vorschläge zur Implementierung der Funktion d genau an. Bei welchen Vorschlägen vermutest du, dass es zu Schwierigkeiten kommt?

(b) Teste anschließend die Vorschläge mit dem Online Python Tutor.

(c) Erweitere in Vorschlag 2 die Funktionsdefinition und das Testprogramm auch an geeigneten Stellen um die Aufrufe print(locals()) und print(globals()). Erkläre hiermit das Verhalten der Implementierungsvorschläge.

X

Fehler melden

X

Suche