Seite 1 von 1

variable aus def in andere importieren

Verfasst: Sonntag 25. Mai 2008, 12:11
von Basti91
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

Verfasst: Sonntag 25. Mai 2008, 13:12
von numerix
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?!

Verfasst: Sonntag 25. Mai 2008, 13:26
von Basti91
und wie kann ich nun diesen wert in die funktion codieren übernehemn. sry aber bin jetzt ein bisschen verwirrt^^

Verfasst: Sonntag 25. Mai 2008, 13:41
von numerix
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 ?????????

Verfasst: Sonntag 25. Mai 2008, 14:40
von Evil4President
@ 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

Verfasst: Sonntag 25. Mai 2008, 15:26
von Leonidas
Haben eigentlich alle bei euch im Kurs solche Probleme?

Verfasst: Sonntag 25. Mai 2008, 16:28
von Evil4President
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...

Verfasst: Sonntag 25. Mai 2008, 18:06
von 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 ;)

Verfasst: Sonntag 25. Mai 2008, 18:17
von Evil4President
Hast du jetzt aber eigentlich indirekt doch gemacht ;-)

Verfasst: Sonntag 25. Mai 2008, 18:30
von lunar
Verdammt... jetzt hat er mich durchschaut ;)