LU08.A03: Logikfehler

Aufgabenstellung

Der Sourcecode des Programms m319_lu10_wrongdivider enthält einen oder mehrere Fehler in der Programmlogik. Das Programm sollte den grössten gemeinsamen Teiler aus zwei Zahlen berechnen.

def main():
    """
    Ermittelt den grössten gemeinsamen Teiler von zwei Ganzzahlen
    :return: None
    """
    first_number = int(input('Gib die erste Ganzzahl ein > '))
    second_number = int(input('Gib die zweite Ganzzahl ein > '))
    while second_number != 0:
        modulo = first_number % second_number
        second_number = first_number
        first_number = modulo
    print(str(second_number))
 
 
if __name__ == '__main__':
    main()

Hinweis

Die ggT-Berechnung geschieht nach dem Algorithmus von Steiner nach Euklid.

  1. R wird zum Divisionsrest aus A % B. (Falls B > A, so wird R einfach zu A.)
  2. Ist R = 0, so ist B der ggT, und das Unterprogramm wird beendet.
  3. Der Variable A wird der Wert von B zugewiesen, und der Variable B wird R zugewiesen.
  4. Zurück zu 1.

Vorgehen

  1. Akzeptieren Sie das Assignment im GitHub Classroom
  2. Klonen Sie ihr Repository in PyCharm.
  3. Führen Sie die Tests in main_test.py aus. Schauen Sie, welche Testfälle fehlerhaft sind.
  4. Verfolgen Sie den Programmablauf mit dem Debugger.
  5. Korrigieren Sie den/die Fehler und führen Sie die Tests erneut aus.
  6. Commit & Push

Bonusfrage

Mit dem fehlerhaften Programm läuft test_2 korrekt. Nachdem Sie das Programm korrigiert haben, zeigt test_2 plötzlich einen Fehler an. Wie können Sie dieses Verhalten erklären?


⇒ GitHub Repo für externe Besucher

GitHub-Repo: https://github.com/templates-python/m319-lu08-a03-logikfehler

Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden

Marcel Suter