Ich muss für ein Schulprojekt mit Python Tkinter einen Taschenrechner ''bauen'' dessen Display folgendermaßen funktionieren soll.
Sagen wir ich möchte "5+6" rechnen, dann tippe ich auf die "5" welche daraufhin erscheint. Tippe ich dann auf das "+" soll es zwar gespeichert werden jedoch nicht erscheinen. Dann tippe ich die "6" ein und die zahl "5" verschwindet vom Display sodass nur noch die "6" zu sehen ist und wenn ich dann "=" eingebe soll da "11" stehen. Bei mir ist es nur so das der ganze Rechenweg auf dem Display erscheint d.h. "5+6=11".
Danke schonmal im vorhinein!
Hilfe bei anzeige vom tkinter Tascherechner!!!
@asdfghjkl: Das ist vielleicht komplizierter als es auf den ersten Blick erscheint, denn man muss hier zwischen den Daten in der Anzeige und den internen Daten des Modells unterscheiden. Und man muss sich die Zustände klar machen in denen sich der Rechner befinden kann. Also zum Beispiel ein Zustand „Zahl erfassen” in dem Tastendrücke von Ziffern und vielleicht noch dem Dezimalpunkt/-komma diese zur aktuellen/angezeigten Zahl hinzufügen, während ein Tastendruck auf '+' diesen vielleicht abbrechen und in einen Zustand „binäre Operation erfassen” wechselt. In dem kann man durch drücken von anderen Operationstasten sich noch umentscheiden und durch Eingabe einer Ziffer gelangt man wieder in einen „Zahlen erfassen”-Zustand um den nächsten Operanden eingeben zu können. An geeigneter Stelle muss man sich dann noch überlegen wann und wie man die Operanden und Operationen speichert. Denn üblicherweise beherrschen auch die simpelsten Rechner die Rechenregeln bezüglich Punkt- vor Strichrechnung, das heisst man muss sich überlegen wie man bei einer beliebigen Rechnung dafür sorgt, dass die in der richtigen Reihenfolge ausgerechnet wird.
Python ist z.B. so ein simpler Rechner, der Punkt- vor Strichrechnung beherscht.BlackJack hat geschrieben: Denn üblicherweise beherrschen auch die simpelsten Rechner die Rechenregeln bezüglich Punkt- vor Strichrechnung, das heisst man muss sich überlegen wie man bei einer beliebigen Rechnung dafür sorgt, dass die in der richtigen Reihenfolge ausgerechnet wird.
@asdfghjkl:
Lass den Benutzer seine Eingaben machen, schreibe diese Eingaben alle in einen String und werte diesen mit der eval Funktion aus
Code: Alles auswählen
print( eval("3+2*7") ) # Ausgabe: 17
print( eval("(3+2)*7") ) # Ausgabe: 35
print( eval("(3+2 *7") ) # Ausgabe: SyntaxError