Seite 1 von 1

Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 17:19
von bastmast
Hallo,
Wollte grad meine ersten Versuche mit Python machen, und irgendwie klappt da garnichts.
Die Funktion soll, solange "d" hochzählen, bis "t" einen Wert annimmt, welcher ein Integer ist, und mir den Wert von "d" dann ausgeben. Beim starten gibts auch keine Probleme, aber wirklich machen tut es wohl auch nix. Was mach ich da denn so komplett falsch?

Code: Alles auswählen

def solveD ():
    a=1209050205001101
    b=1908011809140100
    u=4433106691287813999672937
    v=101217640105485652757
    d=3
    while True:
        t=((v*a)-(b*u))/(a*a-b*b*d)

        if (t-int(t)==0):
            print(d)
            break
        d=d+1

    
Danke schonmal :)

//Edit: i=i+1 war noch übrig vom testen, ist jetzt entfernt

//Und schon tut es, muss man die Pythonshell wirklich vor jeder Änderung am Dokument neustarten? Ich hätte vermutet, dass ein erneuter import reichen sollte?!

Re: Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 17:46
von mutetella
bastmast hat geschrieben:Und schon tut es, muss man die Pythonshell wirklich vor jeder Änderung am Dokument neustarten? Ich hätte vermutet, dass ein erneuter import reichen sollte?!
Nein. Mit der built-in function 'reload' kannst Du Module neu einlesen.

mutetella

Re: Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 18:08
von BlackJack
@bastmast: Rufst Du die Funktion auch irgendwo auf? Denn von alleine startet die tatsächlich nicht. Das wäre auch ziemlich blöd wenn Funktionen einfach so ausgeführt würden, nur weil sie existieren.

Re: Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 18:31
von Leonidas
BlackJack hat geschrieben:Das wäre auch ziemlich blöd wenn Funktionen einfach so ausgeführt würden, nur weil sie existieren.
Ich verstehe schon deinen Punkt, aber in C gibt es ja tatsächlich ``int main()`` die genau so ausgeführt wird. Und wenn es nur eine Funktion gibt könnte man auch annehmen dass die dann ausgeführt wird. Also ganz aus der Luft gegriffen ist das Szenario ja nicht, auch wenn Python sowas nicht implementiert.

Re: Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 18:56
von bastmast
Vielen dank für eure Antworten, ich habe die Funktion schon aufgerufen (from xx.py import *), und dann eben ausgeführt.

Das Problem lag wohl tatsächlich darin, dass ein erneutes importieren nicht zur "Erneuerung" der Funktion führt, und dann immer wieder irgendwas ausgeführt wurde, was ich so nicht verstanden hab.

Der Tipp Python nicht jedesmal neustarten zu müssen hat mir natürlich gefallen, und ich wollte ich direkt ausprobieren, aber wie gibt man ihn ein? ich habe es mit "reload(xx.py)" und mit "reload(Funktionsname) versucht, allerdings klappt das beides nicht. Wie genau muss man das denn eingeben? :)

Re: Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 19:02
von nomnom
mutetella hat geschrieben:
bastmast hat geschrieben:Und schon tut es, muss man die Pythonshell wirklich vor jeder Änderung am Dokument neustarten? Ich hätte vermutet, dass ein erneuter import reichen sollte?!
Nein. Mit der built-in function 'reload' kannst Du Module neu einlesen.

mutetella
Es sei gesagt, dass es nur in Python 2 eine eingebaute Funktion ist. In Python 3 findet man diese Funktion im "imp"-Modul.

Und sein Code sieht einigermaßen nach Python 3 aus (Klammern ums print). Allerdings hat er auch Klammern um die if-Bedingung gesetzt, also könnte es auch nur ein Stil-Fehler sein. ;-)

Zu benutzen ist das folgendermaßen:

Code: Alles auswählen

>>> import imp
>>> import blabla
>>> blabla.blub()
"dieses Ergebnis ist nicht das gewünschte"
# (... Datei wird in der Zwischenzeit verändert ...)
>>> imp.reload(blabla)
>>> blabla.blub()
"dieses Ergebnis ist korrekt!"
Man muss der Funktion also das Modul übergeben.

Re: Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 19:26
von bastmast
Ja benutzte Python 3, ist dann wohl eher ein Stilfehler, komme halt von Java, wo man um alles klammern setzten muss :wink:

Danke, so wie du es geschrieben hast, funktioniert es jetzt auch bei mir :)

Re: Funktion startet nicht

Verfasst: Sonntag 28. Oktober 2012, 19:27
von mutetella
@bastmast:
Mit 'reload(module)' lädst Du ein Modul neu... Eine daraus importierte Funktion/Klasse landet im lokalen Namensraum und ist nicht an das Modul, aus der die Funktion/Klasse stammt, gebunden. Eine Möglichkeit wäre folgendes:

Code: Alles auswählen

>>> import sys
>>> from any_module import *
>>> del sys.modules['any_module']
>>> from any_module import *
Aber ob das sauber ist müssen andere entscheiden... ;-)

mutetella