LU08.L03: Logikfehler

Lösung mit Debugger als Video

Tests

Test Expected Actual
test_1 15 0
test_2 0 0
test_3 11 0

Debugger

Der Fehler muss innerhalb der Iteration liegen. Daher setze ich einen Breakpoint auf die Zeile 9 und verfolge den Ablauf.

Jedes mal wenn ich das Modulo neu berechne, halte ich die Werte für die Variablen fest:

Berechnung SOLL modulo first_number second_number
8565 / 135 = 63 Rest 60 60 8565 135
135 / 60 = 2 Rest 15 0 60 60

Schon beim zweiten Schritt sehe ich ein Problem. Beide Variablen haben den gleichen Wert, weshalb immer GGT=0 herauskommt.

Korrektur

Offenbar habe ich die beiden Variablen first_number und second_number durcheinander gebracht. Korrekt wäre:

...
    while second_number != 0:
        modulo = first_number % second_number
        first_number = second_number
        second_number = modulo
    print(str(first_number))
...

Bonusfrage

Bei test_2 ist ein Fehler beim erwarteten Resultat. Der grösste gemeinsame Teiler kann nie 0 sein, da jede Division durch 0 unmöglich ist. Hier ist also der Test falsch.


Marcel Suter