Freitag, 8. Februar 2013

Dirt Simple Calculator

Für HP Codewars war 2009 als Problem 4 ein schmutziger, einfacher Rechner zu programmieren. Simple, weil die Division nicht unterstützt wird und schmutzig, weil die Punkt-vor-Strich-Rechnung zu ignorieren war:
def term_auswerten(zeile):
    ''' Die Funktion wertet den Term aus,
    Problem hierbei ist,
    a.) dass die Punkt-vor-Strich-Regel
        ausgeklammert ist, d. h.
    b.) der Term von links nach rechts
        auszuwerten ist
    eval() scheidet aus erst einmal aus;
    ein komplexerer Zugriff ist erforderlich
    

    '''
    zeile = zeile.replace(" =","")  # = brauche ich nicht
    zeile = zeile.split(" ")
    term = ""
    
    for a in zeile:

        if a in ["*","+","-"]:
            term = str(eval(term))
            term += a            
        else:
            term += a


    print(eval(term))


data = """28 - 7 * 3 =
13 * 4 + 8 * 2 + 1 =
4 + 3 * 52 =
0 ="""

zeilen = data.split("\n")

for zeile in zeilen:

    if zeile == "0 =":
        pass
    else:
        term_auswerten(zeile)
Die Aufgabe ließ sich schnell lösen, wenn ich auch für die Möglichkeit zur interaktiven Entwicklung dankbar bin. Ich mache noch zu viele Fehler...

Keine Kommentare:

Kommentar veröffentlichen