Python Programm 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.
Antworten
DarthNihilus
User
Beiträge: 2
Registriert: Mittwoch 20. Mai 2020, 22:24

Hey zusammen,
ich bin gerade eben erst hier dazugekommen, aber ich habe direkt mal eine Frage zu einem Code, den ich geschrieben habe und der einen Fehler auslöst: 'local variable 'a' referenced before assignment'. Ich kann allerdings die Fehlerquelle nicht finden. Zur Erklärung ich bin frischer Anfänger und bringe mir Python selbst bei. Es ist sehr gut möglich, dass mein Code sehr naiv ist, aber macht euch selbst ein Bild:

Code: Alles auswählen

from tkinter import *
import sys
import math

i = 0
a = 0
x = 0
y = 0
z = 0
v = 0
k = 0

# Hypotenuse
class Clickbutton(Button):
        def wählen(self):
                i = 1
#Ankathete
class Clickbutton2(Button):
        def wählen(self):
                a = 1
#Gegenkathete
class Clickbutton3(Button):
        def wählen(self):
                x = 1
#Höhe   
class Clickbutton4(Button):
        def wählen(self):
                y = 1
#Flächeninhalt
class Clickbutton5(Button):
        def wählen(self):
                z = 1
#q      
class Clickbutton6(Button):
        def wählen(self):
                v = 1
#p      
class Clickbutton7(Button):
        def wählen(self):
                k = 1
                


class MyButton2(Button):
    def reset(self):
        Eingabe.delete(0, 'end')
        Eingabe2.delete(0, 'end')
        Eingabe3.delete(0, 'end')
        Eingabe5.delete(0, 'end')
        Eingabe6.delete(0, 'end')
        Eingabe7.delete(0, 'end')
        Eingabe8.delete(0, 'end')
        
class MyButton(Button):
        def GO(self):
                if a == 1 and x == 1: #Nicht funktionstüchtig in nächster Zeit überprüfen
                        zahl1 = float(Eingabe2.get())
                        zahl2 = float(Eingabe3.get())
                        Eingabe.delete(0,'end')   
                        Eingabe.insert(0, math.sqrt(zahl1 * zahl1 + zahl2 * zahl2))
                        c = math.sqrt(zahl1 * zahl1 + zahl2 * zahl2)
                        q = zahl1 * zahl1 / c 
                        Eingabe7.delete(0,'end')
                        Eingabe7.insert(0,q)
                        p = zahl2 * zahl2 / c
                        Eingabe8.delete(0,'end')
                        Eingabe8.insert(0,p)
                        h = math.sqrt(q * p)
                        Eingabe5.delete(0,'end')
                        Eingabe5.insert(0,p)
                        A = 1/2 * c * h
                        Eingabe6.delete(0,'end')
                        Eingabe6.insert(0,A)
                        a=0
                        x=0
                if a == 1 and i == 1:
                        zahl1 = float(Eingabe.get())
                        zahl2 = float(Eingabe2.get())
                        b = math.sqrt(zahl1 * zahl1 - zahl2 * zahl2)
                        Eingabe3.delete(0,'end')
                        Eingabe3.insert(0,b)
                        q = zahl2 + zahl2 / zahl1
                        Eingabe7.delete(0,'end')
                        Eingabe7.insert(0,q)
                        p = b * b /zahl1
                        Eingabe8.delete(0,'end')
                        Eingabe8.insert(0,p)
                        h = math.sqrt(q * p)
                        Eingabe5.delete(0,'end')
                        Eingabe5.insert(0,h)
                        A = 1 / 2 * h * zahl1
                        Eingabe6.delete(0,'end')
                        Eingabe6.insert(0,A)
                        a=0
                        i=0
fenster = Tk()
fenster.geometry('700x300')
fenster.title('Pythagoras')

rahmen = Frame(fenster, relief = 'ridge', borderwidth = 5)
rahmen.pack(fill = 'both', expand = 1)

label0 = Label(rahmen, text = 'Geben Sie zwei Werte ein, der Rest wird berechnet.')
label0.grid(row = '2', column = '1')

#Eingabe Hypotenuse
label = Label(rahmen, text = 'Geben sie den Wert der Hypotensuse ein (c)')
label.grid(row = '3', column = '1')
Eingabe = Entry(rahmen, bd = '2', width = '22')
Eingabe.grid(row = '3', column = '2')

#Eingabe Ankathete <<< Bedeutung überprüfen
label2 = Label(rahmen, text = 'Geben sie den Wert der Ankathete ein' )
label2.grid(row = '4', column = '1')
Eingabe2 = Entry(rahmen, bd = '2', width = '22')
Eingabe2.grid(row = '4', column = '2')

#Eingabe Gegenkathete <<< Bedeutung überprüfen
label3 = Label(rahmen, text = 'Geben sie den Wert der Gegenkathete ein')
label3.grid(row = '5', column = '1')
Eingabe3 = Entry(rahmen, bd = '2', width = '22')
Eingabe3.grid(row = '5', column = '2')

#Eingabe Höhe
label5 = Label(rahmen, text = 'Geben sie den Wert der Höhe ein')
label5.grid(row = '6', column = '1')
Eingabe5 = Entry(rahmen, bd = '2', width = '22')
Eingabe5.grid(row = '6', column = '2')

#Eingabe Flächeninhalt
label6 = Label(rahmen, text = 'Geben sie den Wert des Flächeninhalts ein')
label6.grid(row = '7', column = '1')
Eingabe6 = Entry(rahmen, bd = '2', width = '22')
Eingabe6.grid(row = '7', column = '2')

#Eingabe q
label7 = Label(rahmen, text = 'Geben sie den Wert von q dem ersten Teilstück von c ein') 
label7.grid(row = '8', column = '1')
Eingabe7 = Entry(rahmen, bd = '2', width = '22')
Eingabe7.grid(row = '8', column = '2')

#Eingabe p
label8 = Label(rahmen, text = 'Geben sie den Wert p dem zweiten Teilstück von c ein')
label8.grid(row = '9', column = '1')
Eingabe8 = Entry(rahmen, bd = '2', width = '22')
Eingabe8.grid(row = '9', column = '2')

Clickbutton = Clickbutton(rahmen,text = 'Wählen',width = '12') 
Clickbutton['command'] = Clickbutton.wählen 
Clickbutton.grid(row = '3', column = '3')

Clickbutton2 = Clickbutton2(rahmen,text = 'Wählen',width = '12') 
Clickbutton2['command'] = Clickbutton2.wählen 
Clickbutton2.grid(row = '4', column = '3')

Clickbutton3 = Clickbutton3(rahmen,text = 'Wählen',width = '12') 
Clickbutton3['command'] = Clickbutton3.wählen 
Clickbutton3.grid(row = '5', column = '3')

Clickbutton4 = Clickbutton4(rahmen,text = 'Wählen',width = '12') 
Clickbutton4['command'] = Clickbutton4.wählen 
Clickbutton4.grid(row = '6', column = '3')

Clickbutton5 = Clickbutton5(rahmen,text = 'Wählen',width = '12') 
Clickbutton5['command'] = Clickbutton5.wählen 
Clickbutton5.grid(row = '7', column = '3')

Clickbutton6 = Clickbutton6(rahmen,text = 'Wählen',width = '12') 
Clickbutton6['command'] = Clickbutton6.wählen 
Clickbutton6.grid(row = '8', column = '3')

Clickbutton7 = Clickbutton7(rahmen,text = 'Wählen',width = '12') 
Clickbutton7['command'] = Clickbutton7.wählen 
Clickbutton7.grid(row = '9', column = '3')

Button = MyButton(rahmen,text = 'GO',width = '12') 
Button['command'] = Button.GO 
Button.grid(row = '10', column = '1')

Button2 = MyButton2(rahmen,text = 'Reset',width = '12') 
Button2['command'] = Button2.reset 
Button2.grid(row = '11', column = '1') 

#herausfinden wie man alpha, beta und gamma berechnet
#dann noch Knöpfe hinzufügen
Die Kommentare sind für mich also die Problematik sollt ihr nicht lösen!
Antworten