Python und Pythagoras

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.
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Python und Pythagoras

Beitragvon Glamdring » Montag 23. Juni 2003, 14:06

Ich mein zwar die Frage schonmal gepostet zu haben aber hier ist mein Problem:

Code: Alles auswählen

from math import *

class Dreieck:
    def a(self):
        if "c" in gegeben  and "p" in gegeben and "a" not in gegeben:
            self.a_hoch2 = long(self.p) * long(self.c)
            self.a = sqrt(self.a_hoch2)
            gegeben.append("a")
            return "a = %s" %(self.a)
    def b(self):
        if "c" in gegeben  and "q" in gegeben and "b" not in gegeben:
            b_hoch2 = long(self.q) * long(self.c)
            self.b = sqrt(self.b_hoch2)
            gegeben.append("b")
            return "b = %s" %(self.b)
    def c(self):
        if "a" in gegeben  and "b" in gegeben and "c" not in gegeben:
            self.c_hoch2 = (self.a * self.a) + (self.b * self.b)
            self.c = sqrt(self.c_hoch2)
            gegeben.append("c")
            return "c = %s" %(self.c)
        elif "p" in gegeben and "q" in gegeben and "c" not in gegeben:
            self.c = (long(self.p) + long(self.q))
            gegeben.append("c")
            return "c = %s" %(self.c)
    def h(self):
        if "p" in gegeben  and "q" in gegeben and "h" not in gegeben:
            self.h_hoch2 = long(self.p) * long(self.q)
            self.h = sqrt(self.h_hoch2)
            gegeben.append("h")
            return "h = %s" %(self.h)
    def p(self):
        if "c" in gegeben  and "q" in gegeben and "p" not in gegeben:
            self.p = long(self.c) - long(self.q)
            gegeben.append("p")
            return "p = %i" %(self.p)
        else:
            pass
    def q(self):
        if "c" in gegeben  and "p" in gegeben and "q" not in gegeben:
            self.q = long(self.c) - long(self.p)
            gegeben.append("q")
            return "q = %s" %(self.q)
    def anfang(self):
        self.a()
        self.b()
        self.c()
        self.h()
        self.p()
        self.q()
    def __init__(self, *geg1):
        global gegeben
        gegeben = []
        if "p" in geg1:
            self.p = raw_input("Wert fuer p:")
            long(self.p)
            print self.p
            gegeben.append("p")
        if "q" in geg1:
            self.q = raw_input("Wert fuer q:")
            long(self.q)
            print self.q
            gegeben.append("q")
        if "a" in geg1:
            self.a = raw_input("Wert fuer a:")
            long(self.a)
            gegeben.append("a")
        if "b" in geg1:
            self.b = raw_input("Wert fuer b:")
            long(self.b)
            gegeben.append("b")
        if "c" in geg1:
            self.c = raw_input("Wert fuer c:")
            long(self.c)
            gegeben.append("c")
        if "h" in geg1:
            self.h = raw_input("Wert fuer h:")
            long(self.h)
            gegeben.append("h")
        print gegeben
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()


Wenn ich dann eine Standardklasse erzeuge ums auszuprobieren, z.B. so:

Code: Alles auswählen

abc = Dreieck("p", "q")


und dann p und q jeweils den Wert 3 gebe

Dann kommt folgende Fehlermeldung:

Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pythagoras.py", line 89, in ?
abc = Dreieck("p", "q")
File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pythagoras.py", line 81, in __init__
self.anfang()
File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pythagoras.py", line 49, in anfang
self.p()
TypeError: 'str' object is not callable
(Is eh wieder son noob Fehler wie sonst auch immer)

Danke für die Hilfe

Glamdring

[/code]
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Re: Python und Pythagoras

Beitragvon Voges » Montag 23. Juni 2003, 14:35

Hallo!
Du darfst Methoden und Datenfeldern nicht identische Namen geben. Vor self.p = raw_input("Wert fuer p:") zeigte self.p auf eine Methode, danach auf einen String. Und der Versuch, den String wie eine Funktion/Methode aufzurufen, hat dann diese Fehlermeldung zur Folge.
Jan
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Donnerstag 26. Juni 2003, 20:43

Danke, war im Urlaub
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Mittwoch 2. Juli 2003, 16:00

Ich hab ma weiter gemacht und wollte die Eingabe komfortabler machen.
Mein Code sieht so aus:

Code: Alles auswählen

from math import *
from Tkinter import *
def send():
    global a
    global b
    global c
    global q
    global p
    global h
    global ac
    global bc
    global cc
    global pc
    global qc
    global hc
    ac = ''
    bc = ''
    cc = ''
    pc = ''
    qc = ''
    hc = ''
    a = e01.get()
    if a != '':
        ac = "a"
    b = e02.get()
    if b != '':
        bc= "b"
    c = e03.get()
    if c != '':
        cc = "c"
    p = e04.get()
    if p != '':
        pc = "p"
    q = e05.get()
    if q != '':
        qc = "q"
    h = e06.get()
    if h != '':
        hc = "h"
    abc = Dreieck(ac, bc, cc, pc, qc, hc)
def dialog():
    main = Tk()
    l01 = Label(main, text="Bitte tragen sie die Werte fuer die gegebenen Seiten ein, die nicht gegebenen lassen sie bitte frei")
    l01.pack()
    l02 = Label(main, text="Wert fuer a:")
    l02.pack()
    global e01
    e01 = Entry(main)
    e01.pack()
    l03 = Label(main, text="Wert fuer b:")
    l03.pack()
    global e02
    e02 = Entry(main)
    e02.pack()
    l04 = Label(main, text="Wert fuer c:")
    l04.pack()
    global e03
    e03 = Entry(main)
    e03.pack()
    l05 = Label(main, text="Wert fuer p:")
    l05.pack()
    global e04
    e04 = Entry(main)
    e04.pack()
    l06 = Label(main, text="Wert fuer q:")
    l06.pack()
    global e05
    e05 = Entry(main)
    e05.pack()
    l07 = Label(main, text="Wert fuer h:")
    l07.pack()
    global e06
    e06 = Entry(main)
    e06.pack()
    b01 = Button(main, text="Senden", command = send)
    b01.pack()
class Dreieck:
    def aq(self):
        if "c" in gegeben  and "p" in gegeben and "a" not in gegeben:
            self.a_hoch2 = float(self.pe) * float(self.ce)
            self.ae = sqrt(self.a_hoch2)
            gegeben.append("a")
            print "a = %s" %(self.ae)
        elif "c" in gegeben and "b" in gegeben and "a" not in gegeben:
            self.a_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.be) * float(self.be))
            self.ae = sqrt(self.a_hoch2)
            gegeben.append("a")
            print "a = %s" %(self.ae)
    def bq(self):
        if "c" in gegeben  and "q" in gegeben and "b" not in gegeben:
            self.b_hoch2 = float(self.qe) * float(self.ce)
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
            print "b = %s" %(self.be)
        elif "c" in gegeben and "a" in gegeben and "b" not in gegeben:
            self.b_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.ae) * float(self.ae))
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
            print "b = %s" %(self.be)
    def cq(self):
        if "a" in gegeben  and "b" in gegeben and "c" not in gegeben:
            self.c_hoch2 = (float(self.ae) * float(self.ae)) + (float(self.be) * float(self.be))
            self.ce = sqrt(self.c_hoch2)
            gegeben.append("c")
            print "c = %s" %(self.ce)
        elif "p" in gegeben and "q" in gegeben and "c" not in gegeben:
            self.ce = float(self.qe) + float(self.pe)
            gegeben.append("c")
            print "c = %s" %(self.ce)
        elif "b" in gegeben and "q" in gegeben and "c" not in gegeben:
            self.ce = (float(self.be) * float(self.be)) / float(self.qe)
            gegeben.append("c")
            print "c = %s" %(self.ce)
    def hq(self):
        if "p" in gegeben  and "q" in gegeben and "h" not in gegeben:
            self.h_hoch2 = float(self.pe) * float(self.qe)
            self.he = sqrt(self.h_hoch2)
            gegeben.append("h")
            print "h = %s" %(self.he)
    def pq(self):
        if "c" in gegeben  and "q" in gegeben and "p" not in gegeben:
            self.pe = float(self.ce) - float(self.qe)
            gegeben.append("p")
            print "p = %i" %(self.pe)
        elif "c" in gegeben and "a" in gegeben and "p" not in gegeben:
            self.pe = (float(self.ae) * float(self.ae)) / float(self.ce)
            gegeben.append("p")
            print "p = %s" %(self.pe)
        elif "h" in gegeben and "q" in gegeben and "p" not in gegeben:
            self.pe = (float(self.he) * float(self.he)) / float(self.qe)
            gegeben.append("p")
            print "p = %s" %(self.pe)
    def qq(self):
        if "c" in gegeben  and "p" in gegeben and "q" not in gegeben:
            self.qe = float(self.ce) - float(self.pe)
            gegeben.append("q")
            print "q = %s" %(self.qe)
        elif "c" in gegeben and "b" in gegeben and "q" not in gegeben:
            self.qe = (float(self.be) * float(self.be)) / float(self.ce) 
            gegeben.append("q")
            print "q = %s" %(self.qe)
        elif "p" in gegeben and "h" in gegeben and "q" not in gegeben:
            self.qe = (float(self.he) * float(self.he)) / float(self.pe)
            gegeben.append("q")
            print "q = %s" %(self.qe)
    def anfang(self):
        self.aq()
        self.bq()
        self.cq()
        self.hq()
        self.pq()
        self.qq()
    def __init__(self, *geg1):
        global gegeben
        gegeben = []
        if ac:
            self.ae = ac
            float(self.ae)
            gegeben.append("a")
        if bc:
            self.be = bc
            float(self.be)
            gegeben.append("b")
        if cc:
            self.ce = cc
            float(self.ce)
            gegeben.append("c")
        if pc:
            self.pe = pc
            float(self.pe)
            gegeben.append("p")
        if qc:
            self.qe = qc
            float(self.qe)
            gegeben.append("q")
        if hc:
            self.he = hc
            float(self.he)
            gegeben.append("h")
        print geg1
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        nochma = raw_input("Noch eine Aufgabe? j/n")
        if nochma == "j":
            eingeben()
       
     
   
dialog()

Und das ist der Fehler

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python22\lib\lib-tk\Tkinter.py", line 1300, in __call__
    return apply(self.func, args)
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 40, in send
    global h
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 170, in __init__
    self.p()
ValueError: invalid literal for float(): p


Kann mir einer helfen und sagen wieso Python ein p floaten will ???

Gruß Glamdring
p.s: Ich blick auch nur schwer durch den Code durch, liegt vielleicht daran, dass die Variablennamen so schlecht sind, hab aber keine anderen Ideen.
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Beitragvon Voges » Mittwoch 2. Juli 2003, 16:24

Hallo!
Glamdring hat geschrieben:

Code: Alles auswählen

Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 170, in __init__
    self.p()
Dein Code enthält gar kein self.p() und ich bekomme die Fehlermeldung auch nicht. Bist Du sicher, den richtigen Code ausgeführt zu haben?
Jan
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Mittwoch 2. Juli 2003, 16:56

Ups, ich hatte vergessen zu sagen, dass ich, als Beispiel p und q den Wert 3 gegeben habe, aber es ist der Code und bei mir der Fehler


Und def Fehler ging so:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python22\lib\lib-tk\Tkinter.py", line 1300, in __call__
    return apply(self.func, args)
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 40, in send
    abc = Dreieck(ac, bc, cc, pc, qc, hc)
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 170, in __init__
    float(self.pe)
ValueError: invalid literal for float(): p

Gruß
Glamdring
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Testname

Beitragvon Testname » Freitag 4. Juli 2003, 14:39

Boah ist das kompliziert, wer solln da durchblicken :wink:
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Freitag 4. Juli 2003, 15:27

@ Testname: Ich lass das so stehen, stimmt nämlich

@all:
Ich hab den Fehler oben gefunden und weiter gemacht, das Programm soll auf Wunsch eine HTML Datei mit den Ergebnissen erstellen.

Code: Alles auswählen

from math import *
from Tkinter import *
from tkFileDialog import *
def send():
    global a
    global b
    global c
    global q
    global p
    global h
    global v
    v = v.get()
    a = ''
    b = ''
    c = ''
    p = ''
    q = ''
    h = ''
    a = e01.get()
    """ if a != '':
        ac = "a"""
    b = e02.get()
    """ if b != '':
        bc= "b"""
    c = e03.get()
    """  if c != '':
        cc = "c"""
    p = e04.get()
    """  if p != '':
        pc = "p"""
    q = e05.get()
    """ if q != '':
        qc = "q"""
    h = e06.get()
    """if h != '':
        hc = "h"""
    abc = Dreieck(a, b, c, h, p, q)
def dialog():
    main = Tk()
    l00 = Label(main, text="In welcher Ausgabeform wollen sie die Ergebnisse haben?")
    l00.pack()
    global v
    v = IntVar(main)
    global e1
    e1 = ""
    r00 = Radiobutton(main, text="HTML", variable = v, value = "1").pack()
    r00 = Radiobutton(main, text="Ausgabe", variable = v, value = "0").pack()
    l1 = Label(main, text="Ueberschrift (nur falls Ausgabeform HTML sein soll)")
    l1.pack()
    e1 = Entry(main).pack()
    l01 = Label(main, text="Bitte tragen sie die Werte fuer die gegebenen Seiten ein, die nicht gegebenen lassen sie bitte frei")
    l01.pack()
    l02 = Label(main, text="Wert fuer a:")
    l02.pack()
    global e01
    e01 = Entry(main)
    e01.pack()
    l03 = Label(main, text="Wert fuer b:")
    l03.pack()
    global e02
    e02 = Entry(main)
    e02.pack()
    l04 = Label(main, text="Wert fuer c:")
    l04.pack()
    global e03
    e03 = Entry(main)
    e03.pack()
    l05 = Label(main, text="Wert fuer p:")
    l05.pack()
    global e04
    e04 = Entry(main)
    e04.pack()
    l06 = Label(main, text="Wert fuer q:")
    l06.pack()
    global e05
    e05 = Entry(main)
    e05.pack()
    l07 = Label(main, text="Wert fuer h:")
    l07.pack()
    global e06
    e06 = Entry(main)
    e06.pack()
    b01 = Button(main, text="Senden", command = send)
    b01.pack()
class Dreieck:
    def aq(self):
        if "c" in gegeben  and "p" in gegeben and "a" not in gegeben:
            self.a_hoch2 = float(self.pe) * float(self.ce)
            self.ae = sqrt(self.a_hoch2)
            gegeben.append("a")
          #  print "a = %s" %(self.ae)
        elif "c" in gegeben and "b" in gegeben and "a" not in gegeben:
            self.a_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.be) * float(self.be))
            self.ae = sqrt(self.a_hoch2)
            gegeben.append("a")
           # print "a = %s" %(self.ae)
    def bq(self):
        if "c" in gegeben  and "q" in gegeben and "b" not in gegeben:
            self.b_hoch2 = float(self.qe) * float(self.ce)
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
           # print "b = %s" %(self.be)
        elif "c" in gegeben and "a" in gegeben and "b" not in gegeben:
            self.b_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.ae) * float(self.ae))
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
         #   print "b = %s" %(self.be)
    def cq(self):
        if "a" in gegeben  and "b" in gegeben and "c" not in gegeben:
            self.c_hoch2 = (float(self.ae) * float(self.ae)) + (float(self.be) * float(self.be))
            self.ce = sqrt(self.c_hoch2)
            gegeben.append("c")
           # print "c = %s" %(self.ce)
        elif "p" in gegeben and "q" in gegeben and "c" not in gegeben:
            self.ce = float(self.qe) + float(self.pe)
            gegeben.append("c")
           # print "c = %s" %(self.ce)
        elif "b" in gegeben and "q" in gegeben and "c" not in gegeben:
            self.ce = (float(self.be) * float(self.be)) / float(self.qe)
            gegeben.append("c")
           # print "c = %s" %(self.ce)
    def hq(self):
        if "p" in gegeben  and "q" in gegeben and "h" not in gegeben:
            self.h_hoch2 = float(self.pe) * float(self.qe)
            self.he = sqrt(self.h_hoch2)
            gegeben.append("h")
            #print "h = %s" %(self.he)
    def pq(self):
        if "c" in gegeben  and "q" in gegeben and "p" not in gegeben:
            self.pe = float(self.ce) - float(self.qe)
            gegeben.append("p")
          #  print "p = %i" %(self.pe)
        elif "c" in gegeben and "a" in gegeben and "p" not in gegeben:
            self.pe = (float(self.ae) * float(self.ae)) / float(self.ce)
            gegeben.append("p")
           # print "p = %s" %(self.pe)
        elif "h" in gegeben and "q" in gegeben and "p" not in gegeben:
            self.pe = (float(self.he) * float(self.he)) / float(self.qe)
            gegeben.append("p")
           # print "p = %s" %(self.pe)
    def qq(self):
        if "c" in gegeben  and "p" in gegeben and "q" not in gegeben:
            self.qe = float(self.ce) - float(self.pe)
            gegeben.append("q")
           # print "q = %s" %(self.qe)
        elif "c" in gegeben and "b" in gegeben and "q" not in gegeben:
            self.qe = (float(self.be) * float(self.be)) / float(self.ce) 
            gegeben.append("q")
          #  print "q = %s" %(self.qe)
        elif "p" in gegeben and "h" in gegeben and "q" not in gegeben:
            self.qe = (float(self.he) * float(self.he)) / float(self.pe)
            gegeben.append("q")
            #print "q = %s" %(self.qe)
    def anfang(self):
        self.aq()
        self.bq()
        self.cq()
        self.hq()
        self.pq()
        self.qq()
    def __init__(self, *geg1):
        global gegeben
        gegeben = []
        if a:
            self.ae = a
            float(self.ae)
            gegeben.append("a")
        if b:
            self.be = b
            float(self.be)
            gegeben.append("b")
        if c:
            self.ce = c
            float(self.ce)
            gegeben.append("c")
        if p:
            self.pe = p
            float(self.pe)
            gegeben.append("p")
        if q:
            self.qe = q
            float(self.qe)
            gegeben.append("q")
        if h:
            self.he = h
            float(self.he)
            gegeben.append("h")
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.ausgabe()
        nochma = raw_input("Noch eine Aufgabe? j/n")
        if nochma == "j":
            eingeben()
    def ausgabe(self):
        if v == 1:
            path = asksaveasfilename()
            hallo = open(path, "a")
            try:
                self.narse = e1.get()
            except:
                self.narse = ""
            y = "<TR><TD>c</TD><TD>=</TD><TD>%s</TD></TR><TR><TD>p</TD><TD>=</TD><TD>%s</TD></TR>"
            z = "<BR><BR><P ALIGN=\"right\">%s</P><BR><BR><TABLE><TR><TD>a</TD><TD>=</TD><TD>%s</TD></TR><TR><TD>b</TD><TD>=</TD><TD>%s</TD></TR>"
            hallo.write(z + y +"<TR><TD>q</TD><TD>=</TD><TD>%s</TD></TR><TR><TD>h</TD><TD>=</TD><TD>%s</TD></TR>" %(self.narse, self.ae, self.be, self.ce, self.pe, self.qe, self.he))       
     
   
dialog()

Wenn ich HTML ja auswähle und das Titel Feld leer lasse und p und q 3 gebe und als HTML datei test.html auf meinem Desktop übergebe kommt folgender Fehler:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python22\lib\lib-tk\Tkinter.py", line 1300, in __call__
    return apply(self.func, args)
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 37, in send
    abc = Dreieck(a, b, c, h, p, q)
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 194, in __init__
    self.ausgabe()
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 208, in ausgabe
    hallo.write(z + y +"<TR><TD>q</TD><TD>=</TD><TD>%s</TD></TR><TR><TD>h</TD><TD>=</TD><TD>%s</TD></TR>" %(self.narse, self.ae, self.be, self.ce, self.pe, self.qe, self.he))
TypeError: not all arguments converted

Ich hoffe juemand blickt durch
Glamdring
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Beitragvon Voges » Freitag 4. Juli 2003, 15:58

Glamdring hat geschrieben:

Code: Alles auswählen

    hallo.write(z + y +"<TR><TD>q</TD><TD>=</TD><TD>%s</TD></TR><TR><TD>h</TD><TD>=</TD><TD>%s</TD></TR>" %(self.narse, self.ae, self.be, self.ce, self.pe, self.qe, self.he))
TypeError: not all arguments converted

Das bedeutet, das einer der Argumente vom Typ her nicht zum Formatierungscode passt. Du scheinst ausschließlich %s zu benutzen, d.h. mindestens eins der Argumente ist nicht vom Typ string und erzeugt somit diese Fehlermeldung.
Jan
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Freitag 4. Juli 2003, 16:48

@ Voges: Danke, habs geändert :) !

@ all:
Muss leida noch sohn Code reinsetzen.

Code: Alles auswählen

rom math import *
from Tkinter import *
from tkFileDialog import *
def send():
    global a
    global b
    global c
    global q
    global p
    global h
    global v
    v = v.get()
    a = 0.0
    b = 0.0
    c = 0.0
    p = 0.0
    q = 0.0
    h = 0.0
    a = e01.get()
    b = e02.get()
    c = e03.get()
    p = e04.get()
    q = e05.get()
    h = e06.get()
    abc = Dreieck(a, b, c, h, p, q)
def dialog():
    main = Tk()
    l00 = Label(main, text="In welcher Ausgabeform wollen sie die Ergebnisse haben?")
    l00.pack()
    global v
    v = IntVar(main)
    global e1
    e1 = ""
    r00 = Radiobutton(main, text="HTML", variable = v, value = "1").pack()
    r00 = Radiobutton(main, text="Ausgabe", variable = v, value = "0").pack()
    l1 = Label(main, text="Ueberschrift (nur falls Ausgabeform HTML sein soll)")
    l1.pack()
    e1 = Entry(main).pack()
    l01 = Label(main, text="Bitte tragen sie die Werte fuer die gegebenen Seiten ein, die nicht gegebenen lassen sie bitte frei")
    l01.pack()
    l02 = Label(main, text="Wert fuer a:")
    l02.pack()
    global e01
    e01 = Entry(main)
    e01.pack()
    l03 = Label(main, text="Wert fuer b:")
    l03.pack()
    global e02
    e02 = Entry(main)
    e02.pack()
    l04 = Label(main, text="Wert fuer c:")
    l04.pack()
    global e03
    e03 = Entry(main)
    e03.pack()
    l05 = Label(main, text="Wert fuer p:")
    l05.pack()
    global e04
    e04 = Entry(main)
    e04.pack()
    l06 = Label(main, text="Wert fuer q:")
    l06.pack()
    global e05
    e05 = Entry(main)
    e05.pack()
    l07 = Label(main, text="Wert fuer h:")
    l07.pack()
    global e06
    e06 = Entry(main)
    e06.pack()
    b01 = Button(main, text="Senden", command = send)
    b01.pack()
class Dreieck:
    def aq(self):
        if "c" in gegeben  and "p" in gegeben:
            self.a_hoch2 = float(self.pe) * float(self.ce)
            self.ae = sqrt(self.a_hoch2)
            gegeben.append("a")
        elif "c" in gegeben and "b" in gegeben:
            self.a_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.be) * float(self.be))
            self.ae = sqrt(self.a_hoch2)
    def bq(self):
        if "c" in gegeben  and "q" in gegeben:
            self.b_hoch2 = float(self.qe) * float(self.ce)
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
        elif "c" in gegeben and "a" in gegeben:
            self.b_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.ae) * float(self.ae))
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
       
    def cq(self):
        if "a" in gegeben  and "b" in gegeben:
            self.c_hoch2 = (float(self.ae) * float(self.ae)) + (float(self.be) * float(self.be))
            self.ce = sqrt(self.c_hoch2)
            gegeben.append("c")
           
        elif "p" in gegeben and "q" in gegeben:
            self.ce = float(self.qe) + float(self.pe)
            gegeben.append("c")
           
        elif "b" in gegeben and "q" in gegeben:
            self.ce = (float(self.be) * float(self.be)) / float(self.qe)
            gegeben.append("c")
           
    def hq(self):
        if "p" in gegeben  and "q" in gegeben:
            self.h_hoch2 = float(self.pe) * float(self.qe)
            self.he = sqrt(self.h_hoch2)
            gegeben.append("h")
           
    def pq(self):
        if "c" in gegeben  and "q" in gegeben:
            self.pe = float(self.ce) - float(self.qe)
            gegeben.append("p")
         
        elif "c" in gegeben and "a" in gegeben:
            self.pe = (float(self.ae) * float(self.ae)) / float(self.ce)
            gegeben.append("p")
           
        elif "h" in gegeben and "q" in gegeben:
            self.pe = (float(self.he) * float(self.he)) / float(self.qe)
            gegeben.append("p")
           
    def qq(self):
        if "c" in gegeben  and "p" in gegeben:
            self.qe = float(self.ce) - float(self.pe)
            gegeben.append("q")
           
        elif "c" in gegeben and "b" in gegeben:
            self.qe = (float(self.be) * float(self.be)) / float(self.ce) 
            gegeben.append("q")
         
        elif "p" in gegeben and "h" in gegeben:
            self.qe = (float(self.he) * float(self.he)) / float(self.pe)
            gegeben.append("q")
           
    def anfang(self):
        self.aq()
        self.bq()
        self.cq()
        self.hq()
        self.pq()
        self.qq()
    def __init__(self, *geg1):
        global gegeben
        gegeben = []
        if a:
            self.ae = a
            float(self.ae)
            gegeben.append("a")
        if b:
            self.be = b
            float(self.be)
            gegeben.append("b")
        if c:
            self.ce = c
            float(self.ce)
            gegeben.append("c")
        if p:
            self.pe = p
            float(self.pe)
            gegeben.append("p")
        if q:
            self.qe = q
            float(self.qe)
            gegeben.append("q")
        if h:
            self.he = h
            float(self.he)
            gegeben.append("h")
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.ausgabe()
        nochma = raw_input("Noch eine Aufgabe? j/n")
        if nochma == "j":
            dialog()
    def ausgabe(self):
        if v == 1:
            path = asksaveasfilename()
            hallo = open(path, "a")
            try:
                self.narse = e1.get()
            except:
                self.narse = ""
            y = "<TR><TD>c</TD><TD>=</TD><TD>%f</TD></TR><TR><TD>p</TD><TD>=</TD><TD>%f</TD></TR>"
            z = "<BR><BR><P ALIGN=\"right\">%f</P><BR><BR><TABLE><TR><TD>a</TD><TD>=</TD><TD>%f</TD></TR><TR><TD>b</TD><TD>=</TD><TD>%f</TD></TR>"
            hallo.write(z + y +"<TR><TD>q</TD><TD>=</TD><TD>%f</TD></TR><TR><TD>h</TD><TD>=</TD><TD>%f</TD></TR>" %(self.narse, self.ae, self.be, self.ce, self.pe, self.qe, self.he))       
            hallo.close()
        elif v == 0:
            net = Tk()
            a1 = Label(net, text="a = %f" %(a))
            b1 = Label(net, text="b = %f" %(b))
            c1 = Label(net, text="c = %f" %(c))
            p1 = Label(net, text="p = %f" %(p))
            q1 = Label(net, text="q = %f" %(q))
            h1 = Label(net, text="h = %f" %(h))
            a1.pack()
            b1.pack()
            c1.pack()
            p1.pack()
            q1.pack()
            h1.pack()
           
   
dialog()

Ich machs wie oben erklärt.

Fehlermeldung diesmal:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python22\lib\lib-tk\Tkinter.py", line 1300, in __call__
    return apply(self.func, args)
  File "C:/Dokumente und Einstellungen/DA niel/Desktop/Python Projekte/Python/Pythagoras/Pyth. 1.2/Pyth(on)agoras12.py", line 25, in send
    c = e03.get()
  File "C:/Dokumente und Einstellungen/DA niel/Desktop/Python Projekte/Python/Pythagoras/Pyth. 1.2/Pyth(on)agoras12.py", line 178, in __init__
    float(self.pe)
  File "C:/Dokumente und Einstellungen/DA niel/Desktop/Python Projekte/Python/Pythagoras/Pyth. 1.2/Pyth(on)agoras12.py", line 192, in ausgabe
    self.anfang()
TypeError: bad argument type for built-in operation


Hoffe nochmal das einer durchblickt

Gruß
Glamdring
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Sonntag 6. Juli 2003, 12:40

Ich hab wieder weiter gemacht, es gibt nur wenig veränderungen, aber einen neuen Fahler

Code: Alles auswählen

from math import *
from Tkinter import *
from tkFileDialog import *
def send():
    global a
    global b
    global c
    global q
    global p
    global h
    global v
    v = v.get()
    a = 0.0
    b = 0.0
    c = 0.0
    p = 0.0
    q = 0.0
    h = 0.0
    a = e01.get()
    b = e02.get()
    c = e03.get()
    p = e04.get()
    q = e05.get()
    h = e06.get()
    abc = Dreieck(a, b, c, h, p, q)
    main.destroy() #macht angeblich main weck
def dialog():
    global main
    main = Tk()
    l00 = Label(main, text="In welcher Ausgabeform wollen sie die Ergebnisse haben?")
    l00.pack()
    global v
    v = IntVar(main)
    global e1
    e1 = ""
    r00 = Radiobutton(main, text="HTML (ausdruckbar)", variable = v, value = "1").pack()
    r00 = Radiobutton(main, text="nur Bildschirmansicht", variable = v, value = "0").pack()
    l1 = Label(main, text="Ueberschrift (fuer HTML Ausgabeform)")
    l1.pack()
    e1 = Entry(main).pack()
    l01 = Label(main, text="Bitte tragen sie die Werte fuer die gegebenen Seiten ein, die nicht gegebenen lassen sie bitte frei")
    l01.pack()
    l02 = Label(main, text="Seitenlaenge fuer a:")
    l02.pack()
    global e01
    e01 = Entry(main)
    e01.pack()
    l03 = Label(main, text="Seitenlaenge fuer b:")
    l03.pack()
    global e02
    e02 = Entry(main)
    e02.pack()
    l04 = Label(main, text="Seitenlaenge fuer c:")
    l04.pack()
    global e03
    e03 = Entry(main)
    e03.pack()
    l05 = Label(main, text="Seitenlaenge fuer p:")
    l05.pack()
    global e04
    e04 = Entry(main)
    e04.pack()
    l06 = Label(main, text="Seitenlaenge fuer q:")
    l06.pack()
    global e05
    e05 = Entry(main)
    e05.pack()
    l07 = Label(main, text="Seitenlaenge fuer h:")
    l07.pack()
    global e06
    e06 = Entry(main)
    e06.pack()
    b01 = Button(main, text="Senden", command = send)
    b01.pack()
class Dreieck:
    def aq(self):
        if "c" in gegeben  and "p" in gegeben:
            self.a_hoch2 = float(self.pe) * float(self.ce)
            self.ae = sqrt(self.a_hoch2)
            gegeben.append("a")
        elif "c" in gegeben and "b" in gegeben:
            self.a_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.be) * float(self.be))
            self.ae = sqrt(self.a_hoch2)
    def bq(self):
        if "c" in gegeben  and "q" in gegeben:
            self.b_hoch2 = float(self.qe) * float(self.ce)
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
        elif "c" in gegeben and "a" in gegeben:
            self.b_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.ae) * float(self.ae))
            self.be = sqrt(self.b_hoch2)
            gegeben.append("b")
       
    def cq(self):
        if "a" in gegeben  and "b" in gegeben:
            self.c_hoch2 = (float(self.ae) * float(self.ae)) + (float(self.be) * float(self.be))
            self.ce = sqrt(self.c_hoch2)
            gegeben.append("c")
           
        elif "p" in gegeben and "q" in gegeben:
            self.ce = float(self.qe) + float(self.pe)
            gegeben.append("c")
           
        elif "b" in gegeben and "q" in gegeben:
            self.ce = (float(self.be) * float(self.be)) / float(self.qe)
            gegeben.append("c")
           
    def hq(self):
        if "p" in gegeben  and "q" in gegeben:
            self.h_hoch2 = float(self.pe) * float(self.qe)
            self.he = sqrt(self.h_hoch2)
            gegeben.append("h")
           
    def pq(self):
        if "c" in gegeben  and "q" in gegeben:
            self.pe = float(self.ce) - float(self.qe)
            gegeben.append("p")
         
        elif "c" in gegeben and "a" in gegeben:
            self.pe = (float(self.ae) * float(self.ae)) / float(self.ce)
            gegeben.append("p")
           
        elif "h" in gegeben and "q" in gegeben:
            self.pe = (float(self.he) * float(self.he)) / float(self.qe)
            gegeben.append("p")
           
    def qq(self):
        if "c" in gegeben  and "p" in gegeben:
            self.qe = float(self.ce) - float(self.pe)
            gegeben.append("q")
           
        elif "c" in gegeben and "b" in gegeben:
            self.qe = (float(self.be) * float(self.be)) / float(self.ce) 
            gegeben.append("q")
         
        elif "p" in gegeben and "h" in gegeben:
            self.qe = (float(self.he) * float(self.he)) / float(self.pe)
            gegeben.append("q")
           
    def anfang(self):
        self.aq()
        self.bq()
        self.cq()
        self.hq()
        self.pq()
        self.qq()
    def __init__(self, *geg1):
        global gegeben
        gegeben = []
        if a:
            self.ae = a
            float(self.ae)
            gegeben.append("a")
        if b:
            self.be = b
            float(self.be)
            gegeben.append("b")
        if c:
            self.ce = c
            float(self.ce)
            gegeben.append("c")
        if p:
            self.pe = p
            float(self.pe)
            gegeben.append("p")
        if q:
            self.qe = q
            float(self.qe)
            gegeben.append("q")
        if h:
            self.he = h
            float(self.he)
            gegeben.append("h")
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.anfang()
        self.ausgabe()
        self.nochma()
    def ausgabe(self):
        if v == 1:
            path = asksaveasfilename()
            hallo = open(path, "a")
            try:
                self.narse = e1.get()
            except:
                self.narse = ""
            y = "<TR><TD>c</TD><TD>=</TD><TD>%f</TD></TR><TR><TD>p</TD><TD>=</TD><TD>%f</TD></TR>"
            z = "<BR><BR><P ALIGN=\"right\">%f</P><BR><BR><TABLE><TR><TD>a</TD><TD>=</TD><TD>%f</TD></TR><TR><TD>b</TD><TD>=</TD><TD>%f</TD></TR>"
            hallo.write(z + y +"<TR><TD>q</TD><TD>=</TD><TD>%f</TD></TR><TR><TD>h</TD><TD>=</TD><TD>%f</TD></TR>" %(self.narse, self.ae, self.be, self.ce, self.pe, self.qe, self.he))       
            hallo.close()
        elif v == 0:
            net = Tk()
            a1 = Label(net, text="a = %f" %(a))
            b1 = Label(net, text="b = %f" %(b))
            c1 = Label(net, text="c = %f" %(c))
            p1 = Label(net, text="p = %f" %(p))
            q1 = Label(net, text="q = %f" %(q))
            h1 = Label(net, text="h = %f" %(h))
            a1.pack()
            b1.pack()
            c1.pack()
            p1.pack()
            q1.pack()
            h1.pack()
    def nochma(self):
        nochma = Tk()
        bbb = IntVar(nochma)
        l = Lable(nochma, text="Noch eine Aufgabe?")
        l.pack()
        b = Radiobutton(nochma, text="Ja", variable = bbb, value="1").pack()
        bb = Radiobutton(nochma, text="Nein", variable = bbb, value="o").pack()
        if bbb.get() == 1:
            dialog()
   
dialog()


Hier die Fehlermeldung:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python22\lib\lib-tk\Tkinter.py", line 1300, in __call__
    return apply(self.func, args)
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 25, in send
    main.destroy()
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 180, in __init__
    self.ausgabe()
  File "C:\Dokumente und Einstellungen\DA niel\Desktop\Python Projekte\Python\Pythagoras\Pyth. 1.2\Pyth(on)agoras12.py", line 196, in ausgabe
    a1 = Label(net, text="a = %f" %(a))
TypeError: bad argument type for built-in operation


Gruß
Glamdring
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Beitragvon Voges » Sonntag 6. Juli 2003, 13:47

Glamdring hat geschrieben:

Code: Alles auswählen

    a1 = Label(net, text="a = %f" %(a))
TypeError: bad argument type for built-in operation
Ein TypeError im Zusammenhang mit der Stringformatierung hattest Du doch erst 3 Beiträge vorher. Einfach mal durch Fehler erlangte Kenntnisse anwenden. Wenn ich mir den Code so angucke, können wir sonst noch tagelang so weitermachen ;-)
Jan
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Sonntag 6. Juli 2003, 14:17

Is mir durchaus bewusst, das Problem ist, das a in jedem Fall eine flloat Zahl sein muss. Denn da ich p und q den Wert 3 gegeben habe muss die Funktion aq() in jedem Fall durchlaufen werden. Hier ein die definition von aq():

Code: Alles auswählen

if "c" in gegeben  and "p" in gegeben:
            self.a_hoch2 = float(self.pe) * float(self.ce)
            self.ae = float(sqrt(self.a_hoch2))
            gegeben.append("a")
        elif "c" in gegeben and "b" in gegeben:
            self.a_hoch2 = (float(self.ce) * float(self.ce)) - (float(self.be) * float(self.be))
            self.ae = float(sqrt(self.a_hoch2))
            gegeben.append("a")


Gruß
Glamdring
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Beitragvon Voges » Sonntag 6. Juli 2003, 14:33

Glamdring hat geschrieben:Denn da ich p und q den Wert 3 gegeben habe muss die Funktion aq() in jedem Fall durchlaufen werden.
Was man gut mit einer print-Anweisung überprüfen könnte. Ich sehe aber nicht, das Du in aq() a überhaupt benutzt.
Jan
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Beitragvon Glamdring » Sonntag 6. Juli 2003, 16:18

Ah, ja bei der Ausgabe mit tk hab ich den Fehler gemacht a mit self.ae zu verwechseln, daher der Fehler.
Aber der andere Fehler bleibt trotz der Änderung erhalten, da ich dort self.ae nicht vergessen hatte und Python self.ae trotzdem es self.aq() durchlaufen hat keine als float Zahl anerkennt.

Gruß
Glamdring
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder