variable aus def in andere importieren

Fragen zu Tkinter.
Antworten
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

hallo ich habe folgendes problem ich habe in einer definition eine variable und würde sie in einer anderen gerne wieder benutzen wie kann ich sie importieren.

hier ein auszug aus meinem quelltext:

Code: Alles auswählen


.....

def tk_caesar_decodieren(a,b):
    klartext = str(a)
    versch = int(b)
    laenge = len(klartext)
    klartext= klartext.upper()
    versch = versch%26

    chiffre =""
    for i in range (0,laenge):
        if 65 <= ord(klartext[i]) + versch <= 90:
            chiffre += chr(ord(klartext[i])+ versch)
        elif ord(klartext[i]) + versch > 90:
            chiffre += chr(ord(klartext[i])+ versch -26)
        elif ord(klartext[i]) ==32:# " "
            chiffre += chr(ord(klartext[i]))
        elif ord(klartext[i]) ==33:# !
            chiffre += chr(ord(klartext[i]))
        elif ord(klartext[i]) ==46:# .
            chiffre += chr(ord(klartext[i]))
        elif ord(klartext[i]) ==44:# ,
            chiffre += chr(ord(klartext[i]))
        elif ord(klartext[i]) ==63:# ?
            chiffre += chr(ord(klartext[i]))
            
        else:
            chiffre += chr(ord(klartext[i])+ versch +26)
    code = chiffre #UM DIESE VARIABLE GEHT ES
    return code

def codierung():
    codieren = Tk()
    text = texteingabe.get()
    zahl = schluessel.get()
    tk_caesar_decodieren(text,zahl)
    code=code.get() ' HIER MÖCHTE ICH SIE IMPORTIEREN
    ausgabe = Label (codieren, text = code)
    ausgabe.pack()
    codieren.mainloop()
 
                                     ..........


Als Fehlermeldung bekomme ich immer:

File "C:\Dokumente und Einstellungen\Sebastian\Desktop\info1\caesar caode\tk\caesar_tk.py", line 40, in codierung
code=code.get()
UnboundLocalError: local variable 'code' referenced before assignment
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dein Anliegen offenbart erhebliches Nichtverstehen, was du da eigentlich machst; auch der Titel deines Threads legt das nahe (ist kein "def", sondern du hast da eine Funktion definiert).

Jede Funktion hat ihren lokalen Namensraum und deine Variable code ist so eine lokale Variable. Die kannst du nicht woanders "importieren", aber du kannst den enthaltenen Wert als Rückgabewert der Funktion verwenden (das passiert ja sogar in deiner Funktion) und ihn dann als Parameter an die Funktion codierung übergeben, die ihn dann benutzen kann.

Auch über die Namensgebung für deine Funktionen solltest du nochmal nachdenken.

Ich verstehe aber nicht, wie man GUIs programmieren kann (oder eben auch nicht, aber es nach Ansicht des Informatiklehrers - evtl. der gleiche wie der von Evil4President und nightm4r3^ :) - jedenfalls können sollte), ohne gelernt bzw. verstanden zu haben, wie man Werte zwischen Funktionen austauscht?!
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

und wie kann ich nun diesen wert in die funktion codieren übernehemn. sry aber bin jetzt ein bisschen verwirrt^^
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Basti91 hat geschrieben:und wie kann ich nun diesen wert in die funktion codieren übernehemn. sry aber bin jetzt ein bisschen verwirrt^^
"codieren" ist bei dir keine Funktion, sondern eine Instanz von Tk() - warum und wofür auch immer.

Die Funktion heißt bei dir codierung.

Es geht um das hier:

Code: Alles auswählen

def erzeuge_was():
    return "Übergabetext"

def nimm_was(was):
    print was

erzeugnis = erzeuge_was()
nimm_was(erzeugnis)
Aber mal ehrlich, wenn du das bisher nicht verstanden hast, wie willst du eine GUI programmieren ?????????
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

@ pütone: Wenn ich mit meiner Vermutung richtig liege was die Deutung des Namens Basti91 angeht, dann ist es derselbe Informatiklehrer, jedoch hat dieser uns beigebracht, wie man solche Werte von Funktionen, durch das von dir so schön beschriebene "Geben und Nehmen" verwenden kann. Würde mal tippen, da hat Basti nicht aufgepasst ;-) :P
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Haben eigentlich alle bei euch im Kurs solche Probleme?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Das ist eine gute Frage.
Ich versuche eigentlich meine Zeit, die ich nicht für andere Fächer brauche mit Herumexperimentieren mit Python zu nutzen (unter anderem Durchlesen von Referenzen)... Allerdings ist es tatsächlich so, dass wir nicht unbedingt viel erklärt bekommen im Kurs, daher muss man sich nunmal selbst drum kümmen an die Informationen zu kommen.
Aber es ist so, dass etwa 80% im Kurs lieber SuperMario spielen, als sich mit Python zu beschäftigen oder zuzuhören... Von daher ist es nicht unbedingt ein Wunder, dass viele solche Probleme bekommen...
lunar

Manchmal bedauere ich es fast, nicht im Usenet zu sein, wo man solche Fragen gemeinhin mit einem dahingerotzten "RTFM" bzw. in diesem Fall eher "RTFT" beantworten kann ;)
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Hast du jetzt aber eigentlich indirekt doch gemacht ;-)
lunar

Verdammt... jetzt hat er mich durchschaut ;)
Antworten