Sida 1 av 1

använda egen funktion i modul i Python, problem! [LÖST]

Postat: 22 sep 2008, 08:43
av ZerQ
Hejsan

Jag har provat att skapa en modul vars enda funktion skall beräkna och skriva ut hur många dagar, timmar, minuter och sekunder det blir av ett givet antal sekunder. Funktionen i sig själv fungerar perfekt men det verkar som om anropet till denna funktion inte fungerar för den skriver bara ut nollor på alla 4 variabler som finns i funktionen.

Anropet ser ut som följande i huvudprogrammet:

Kod: Markera allt

import timekonvert
inSek = 90061

timekonvert.sekundTillDag(inSek)
Och funktionen ser ut som följande i modulen:

Kod: Markera allt

# Definition och tilldelning av variabler och konstanter (globala)
DAG = 86400
TIM = 3600
MIN = 60


# Funktionsblock för modulen
##############################################################
def sekundTillDag(inSek): # Funktion som uför omvandling från sekunder till dagar...
    # Definition och deklarering av lokala variabler
    dagar = 0
    timmar = 0
    minuter = 0
    sekunder = 0
    
    # Utför beräkningen och tilldela svaret till varje lokal variabel
    dagar = inSek / DAG
    timmar = (inSek % DAG) / TIM
    minuter = (inSek - (dagar * DAG + timmar * TIM)) / MIN
    sekunder = inSek - (dagar * DAG + timmar * TIM + minuter * MIN)
    
    # Skriv ut svaret och återvänd till anropande funktion
    print dagar, "dagar, ", timmar, "timmar, ", minuter, "minuter, ", sekunder, "sekunder.\n"
Men som sagt det verkar inte som att variabeln inSek i anropet ifrån huvudprogrammet får med sig något värde, vad har jag gjort fel någonstans?

Re: använda egen funktion i modul i Python, problem!

Postat: 22 sep 2008, 17:16
av gasol
Funkar för mig...

Kod: Markera allt

>>> import a
>>> a.sekundTillDag(499999)
5 dagar,  18 timmar,  53 minuter,  19 sekunder.

Re: använda egen funktion i modul i Python, problem!

Postat: 24 sep 2008, 08:21
av ZerQ
mm, För mig också nu. Jag stängde av datorn och när jag nästa gång skulle testa programmet så fungerade det. Har provat vidare och tydligen tycker inte Python IDLE att den kan använda förändringar gjorda i programmet direkt, jag måste starta om programmet varje gång...

Men tack för hjälpen iaf ändå.

Re: använda egen funktion i modul i Python, problem! [LÖST]

Postat: 01 okt 2008, 20:05
av Jakob.Pogulis
Du måste använda reload(timekonvert) istället för import timekonvert om du vill ladda om modulen mer än en gång.