Quadratwurzelfunktion, Sinus und cosinus einbauen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
marey
User
Beiträge: 5
Registriert: Freitag 20. Mai 2011, 08:59

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()
deets

Bitte benutz die python-code-tags um deinen Code zu setzen.
marey
User
Beiträge: 5
Registriert: Freitag 20. Mai 2011, 08:59

Sorry!



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')
Taschenrechner(root);root.mainloop()
deets

Und das hast du wirklich selbst geschrieben, und es funktioniert?
marey
User
Beiträge: 5
Registriert: Freitag 20. Mai 2011, 08:59

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 :(
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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`.
Das Leben ist wie ein Tennisball.
deets

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 :(
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:

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?
lunar

@deets: Dieser Beitrag war ziemlich überflüssig. Wenn Du nichts zum Thema zu sagen hast, dann sage einfach gar nichts.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@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.
BlackJack

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…
deets

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?
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

deets hat geschrieben: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.
Antworten