HSG

Aktuelle Seite: HSG/Fächer/Informatik/Python

Beispiel 1

Das Beispiel zeigt, dass die fehlende Typvereinbarung in Python mehr als wettgemacht werden kann. Wenn eine Zusicherung verletzt ist, wird ein Laufzeitfehler (AssertionError) ausgelöst.

# -*- coding: iso-8859-1 -*-
# Autor: Klaus Merkert, Datum: 6.6.08

def primfac(zahl):
    # ---------- Vorbedingung -------------
    assert (type(zahl) == int) and zahl > 0
    # -------------------------------------
    n = zahl
    F = []
    while n%2 == 0:
        F.append(2)
        n = n/2
    while n%3 == 0:
        F.append(3)
        n = n/3
    t = 5
    diff = 2
    while t*t <= n:
        while n%t == 0:
            F.append(t)
            n = n/t
        t = t + diff
        diff = 6 - diff
    if n > 1:
        F.append(n)
    # ---------- Nachbedingung ------------
    p = 1
    for i in F:
        p = p*i
    assert p == zahl
    # -------------------------------------
    return F

if __name__ == '__main__':
    print(primfac(6936))
    print(primfac(-42))

Links