Hallo pythonuser..
Ich habe eine Aufgabe bekommen wo ich einen normalen Taschenrechner programmieren soll.. die Grundrechenformen wie plus minus mal und geteilt hae ich schon nun hänge ich bei den funktionen sinus cosinus und quadratwurzel ziehen Kann mir jemand helfen ?
::::::hier das jetzige programm:::::::
from Tkinter import *
import math
class Taschenrechner(Frame):
def __init__(self,master=None):
Frame.__init__(self)
self.pack(expand=YES, fill=BOTH) #Ma?e der Buttons
self.option_add('*Font', 'Courier 12 bold') #Schriftart
self.stringvar = StringVar()
self.entry=Entry(self, relief=SUNKEN,
textvariable=self.stringvar)
self.entry.pack(side=TOP, expand=YES, fill=BOTH)
for tasten in ('789/', '456*','123-', '.0+='): #Angaben der Ziffern und Zeichen
self.frame1=Frame(self)
self.frame1.pack(side=TOP, expand=YES, fill=BOTH) #Ma?e des Entryfeldes
for zeichen in tasten:
self.b=Button(self.frame1, text=zeichen,command=lambda z=zeichen,
var=self.stringvar, : var.set(var.get() + z))
self.b.pack(side=LEFT, expand=YES, fill=BOTH) # Anpassung der Buttons im Feld
if zeichen == '=': #Gibt das Ergebnis raus
self.b.configure(command=self.rechnen) # Befehl
Button(self.frame1,text=' CE ', #Button zum L?schen
command=lambda var=self.stringvar: var.set('')).pack(expand=True, fill=BOTH)#('') erzeugt leere Feld
def rechnen(self):
rec = str(eval(self.stringvar.get()))
self.entry.delete(0, END) #setzt die Rechnung zur?ck und gibt das Ergebnis raus
self.entry.insert(END, str( rec))
self.entry
root=Tk()
root.geometry('400x250+250+250')
Taschenrechner(root);root.mainloop()
Quadratwurzelfunktion, Sinus und cosinus einbauen
Sorry!
Taschenrechner(root);root.mainloop()
Code: Alles auswählen
from Tkinter import *
import math
class Taschenrechner(Frame):
def __init__(self,master=None):
Frame.__init__(self)
self.pack(expand=YES, fill=BOTH) #Ma?e der Buttons
self.option_add('*Font', 'Courier 12 bold') #Schriftart
self.stringvar = StringVar()
self.entry=Entry(self, relief=SUNKEN,
textvariable=self.stringvar)
self.entry.pack(side=TOP, expand=YES, fill=BOTH)
for tasten in ('789/', '456*S','123-C', '.0+=W'): #Angaben der Ziffern und Zeichen
self.frame1=Frame(self)
self.frame1.pack(side=TOP, expand=YES, fill=BOTH) #Ma?e des Entryfeldes
for zeichen in tasten:
self.b=Button(self.frame1, text=zeichen,command=lambda z=zeichen,
var=self.stringvar, : var.set(var.get() + z))
self.b.pack(side=LEFT, expand=YES, fill=BOTH) # Anpassung der Buttons im Feld
if zeichen == '=': #Gibt das Ergebnis raus
self.b.configure(command=self.rechnen) # Befehl
Button(self.frame1,text=' CE ', #Button zum L?schen
command=lambda var=self.stringvar: var.set('')).pack(expand=True, fill=BOTH)#('') erzeugt leere Feld
def rechnen(self):
rec = str(eval(self.stringvar.get()))
self.entry.delete(0, END) #setzt die Rechnung zur?ck und gibt das Ergebnis raus
self.entry.insert(END, str( rec))
self.entry
root=Tk()
root.geometry('400x250+250+250')
Mein Vorschlag ist nicht der schönste, aber bei dem vorhanden Code kommt es darauf wohl auch nicht mehr ganz an An der Stelle, wo du über die Tasten iterierst, würde ich einfach noch die Tasten `cos`, `sin`, `(` und `)` hinzufügen. Natürlich nicht als String, wie es momentan mit "789/" ist, sondern als Liste `["cos", "sin", "(", ")"]` oder als Tupel. Statt `import math` verwendest du `from math import cos, sin`. Wie gesagt, die Lösung ist nicht schön, aber sie sollte reichen.
Für die Quadratwurzel entsprechend noch `sqrt`.
Für die Quadratwurzel entsprechend noch `sqrt`.
Das Leben ist wie ein Tennisball.
Na, mensch, ihr seid ja ne ganz schoen clevere Klasse. Vor allem, weil ihr einen von euch in die Vergangenheit geschickt habt, um als User pyStyler vor 4 Jahren das hier zu posten:marey hat geschrieben:ja es funktioniert mit hilfe meines lehrers udn mitschülern halt, aber nun haben wir das als hausarbeit bekommen .. und müssen es bis um 14 h fertig haben
http://www.python-forum.de/viewtopic.ph ... 34&start=0
Soviel zu deiner ruehrseligen Geschichte - alles Luege. Andere Leute bekommen fuer sowas ihren Doktortitel aberkannt. Und du hoffentlich keine Hilfe mehr hier, und die schlechte Note, die du verdient hast.
Beim naechsten mal einfach frueher anfangen, gell?
@deets: Dieser Beitrag war ziemlich überflüssig. Wenn Du nichts zum Thema zu sagen hast, dann sage einfach gar nichts.
@deets: Sei mal nicht so garstig. Vielleicht ist jemand aus der Gruppe auf das Snippet gestoßen, dann hat die Gruppe es übernommen und an einigen Stellen abgeändert. So ist das halt bei Anfängern. Es ist zwar noch eine andere Sache, dass die Gruppe ihren Code vermutlich nicht 100%ig verstehen wird, aber den OP als dreisten Lügner hinzustellen, ist etwas übertrieben.
Also ich finde deet's Beitrag ist sowohl zum Thema passend, als auch inhaltlich okay. Da versucht sich jemand seine Hausaufgaben komplett von anderen machen zu lassen und lügt dabei ziemlich heftig über seine Eigenleistung an dem was er als bisher "erarbeitetes" präsentiert. Und mit fast null Eigenleistung drei Stunden vor Abgabetermin eine Lösung von anderen haben zu wollen…
Der code ist nahezu 1:1, mit der Ausnahme der neu hinzugekommenen Buchstaben fuer die trigonometrischen Funktionen. Wodurch er im uebrigen auch nicht mehr funktioniert.
Und ihr glaubt ernsthaft die Geschichte von "das ist zusammen mit den anderen und dem Lehrer entstanden"?
Ich bin wirklich nicht boesglaeubig, aber wenn etwas ein Taeuschungsversuch ist, dann das. Und das soll man also unkommentiert lassen?
Und ihr glaubt ernsthaft die Geschichte von "das ist zusammen mit den anderen und dem Lehrer entstanden"?
Ich bin wirklich nicht boesglaeubig, aber wenn etwas ein Taeuschungsversuch ist, dann das. Und das soll man also unkommentiert lassen?
Nein, sollte man nicht. Die Nummer ist einfach mies.deets hat geschrieben:Ich bin wirklich nicht boesglaeubig, aber wenn etwas ein Taeuschungsversuch ist, dann das. Und das soll man also unkommentiert lassen?