====== LU08.L03: Logikfehler ====== [[https://youtu.be/wtoNQ1zVMkc|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. {{:modul:m319python:learningunits:lu10:loesungen:lu10_debug_wrongdivider.png?600|}} 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. ---- [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Marcel Suter