Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 1180
Prøver meg litt på python om dagen og trenger litt hjelp av dere.
Åssen får jeg lagret outputen fra en funksjon slik at jeg kan benytte meg av denne utenfor funksjonen?

Eksempel: (Koden fungerer ikke)
_
def sum():
a = 100
def kostnad():
b = 50

sum()
kostnad()
print "Du har igjen %r kr" % (a - b)
_

Problemet er det at verdiene ( a og b), fra funksjonene ikke blir lagret, slik at jeg senere kan benytte meg av dem.

Eneste som jeg kan tenke meg til er å benytte meg av 'list', for å så hente ut verdiene fra listen senere og gi de variabler. Dette blir veldig vanskelig for meg, ettersom jeg er helt ny i "gamet".

Finnes det en rimelig enkel måte å gjøre dette på?
Sist endret av Prognisse; 27. mars 2011 kl. 19:01.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Nå skal det sies at jeg ikke har peil på python, men jeg regner med du bør definere variabler utenfor funksjoner, dersom de skal være tilgjengelige utenfor dem.
Dette har med forskjellene på lokal og global scope å gjøre. Verdiene innad i funksjoner er ikke tilgjengelige utenfor, hvis du vil returnere en eller flere verdier må du gjøre det sånn:

Kode

def a():
    return 4
Og så kalle den

Kode

verdi = a()
Da vil verdi inneholde 4.

Verdiene innenfor funksjonene er å anse som midlertidige variable i de aller fleste tilfeller i programmeringsverdenen - de forsvinner når funksjonskallet er ferdig og det eneste som blir igjen er enten verdier som blir returnert, eller ting som blir modifisert via funksjonen (f.eks. ved andre funksjonskall eller referansekall).
Sist endret av ivioynar; 27. mars 2011 kl. 19:05.
Bare for utbrodere ivioynar svar litt.

Kode

def sum():
    a = 100
    return a

def kostnad():
    '''or just return the value'''
    return 50

my_sum = sum()
my_kostnad = kostnad()
print "Du har igjen %d kr" % (my_sum - my_kostnad)
Nå er det kanskje bedre design for dette og lage en funksjon som tar 2 argumenter inn og returnere resultat ut.
Ikke bruk norsk i koden,skal du en gang ha norsk brukerinterface da er der greit og bruke norsk kun på det bruker ser ut.

Kode

def sum_total(sum_in, kostnand_in):
    result = sum_in - kostnand_in
    return result

my_sum = 100
my_kostnad = 50
print "Du har igjen %d kr" % sum_total(my_sum, my_kostnad)
Alt er vel sagt ift. problemet ditt, men tenkte jeg skulle nevne en liten ting til.

sum() er også navet på en innebygd funksjon i python (som returnerer summen av en sekvens, f.eks. sum([1,2,3]) gir 6) og det er dårlig praksis å ha globale funksjoner eller variabler som 'overskriver' denne funksjonen.