Fehlermeldung, brauche Hilfe bei float

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
PheysX
User
Beiträge: 5
Registriert: Donnerstag 3. Januar 2013, 14:02

Diese Fehlermeldung bekomme ich,...

Code: Alles auswählen

 File "C:\Users\Janny\Desktop\Hausarbeit\test.py", line 20, in Berechnen
    w = float(((5/384) * ((q*(l**4)) / (E*I))))
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
...,zu dieser Funktion:

Code: Alles auswählen

def Berechnen ():
    
    print ("Diese Funktion berechnet mit den eingegebenen Daten q,l,e und i die Verformung eines, wie in der Grafik sehbaren Balkens!")     #Definition Berechnen

    q =  qwert.get()
    l =  lwert.get()
    E =  ewert.get()
    I =  iwert.get()

    w = float(((5/384) * ((q*(l**4)) / (E*I))))

    Ergebnis = w

    E2.insert(0,Ergebnis)

Das sind die dazugehörigen Label

Code: Alles auswählen

Label(text="q= ").grid(row=1,column=0,sticky="e")
qwert=Entry(width=10)
qwert.grid(row=1,column=1, sticky="w")

Label(text="l= ").grid(row=2,column=0,sticky="e")
lwert=Entry(width=10)
lwert.grid(row=2,column=1,sticky="w")

Label(text="E= ").grid(row=3,column=0,sticky="e")
ewert=Entry(width=10)
ewert.grid(row=3,column=1,sticky="w")

Label(text="I= ").grid(row=4,column=0,sticky="e")
iwert=Entry(width=10)
iwert.grid(row=4,column=1,sticky="w")
Wie kann ich die Funktion umschreiben, so dass das Programm die Formel rechnet?
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn du dir den Inhalt eines `Entry`-Objekts mittels `.get()` holst, dann wird dort Text zurückgeliefert. Und mit Text kann man schlecht rechnen. Daher kommt die Fehlermeldung. Du musst also aus jeder `.get()`-Aktion dementsprechend ein `float(dein_entry.get())` machen.

Oder du schreibst dir als Abkürzung eine kleine Funktion:

Code: Alles auswählen

def get_float(entry):
    return float(entry.get())
PheysX
User
Beiträge: 5
Registriert: Donnerstag 3. Januar 2013, 14:02

kann ich es mir auch anders holen? so das es gleich eine Zahl bleibt?

ansonsten meinst du das so?

Code: Alles auswählen

q =  float(qwert.get())
l =  float(lwert.get())
E =  float(ewert.get())
I =  float(iwert.get())
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@PheysX: das war in Deinem gestrigen Post auch noch so,
aber alles Gute kommt ja zum Glück wieder :D .
PheysX
User
Beiträge: 5
Registriert: Donnerstag 3. Januar 2013, 14:02

ja aber das problem ist das er mir ja gestern in der Fehleranalyse ausgegeben hat das L keine Zahl ist, ist es aber ich gebe für jede Variable eine Zahl ein aber bei q das eine Zeile zuvor steht macht er keine Probleme
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

in diesem Fall hilft es aber auch nichts, statt mit einer Zahl mit einem String rechnen zu wollen.
Was liefert denn lwert.get() tatsächlich zurück?
Antworten