Gå til innhold

Anbefalte innlegg

Altså, eg forstår meg bare ikke på return funksjonen i egendefinerte funksjoner. Se på denne koden her:

 

true = 1
false = 0

def get_questions():
   return [["What color is the daytime sky on a clear day?","blue"],\
           ["What is the answer to life, the universe and everything?","42"],\
           ["What is a three letter word for mouse trap?","cat"]]

def check_questions(question_and_answer):
   question = question_and_answer[0]
   answer = question_and_answer[1]
   given_answer = raw_input(question)
   if given_answer == answer:
       print "Korrekt"
       return true
   else:
       print "Feil, det riktige er",answer
       return false

def run_test(questions):
   if len(questions) == 0:
       print "ingen sporsmaal gitt"
       return
   index = 0
   right = 0
   while len(questions) > index:
       if check_questions(questions[index]):
           right = right + 1
       index = index + 1
   print "Du fikk",right*100/len(questions),"% av",len(questions),"sporsmaal"

   
run_test(get_questions())

 

Hva gjør return funksjonen når den returnerer false og true? Hva er det som skjer?

Lenke til kommentar
Videoannonse
Annonse

For det første, du definerer dine egne globale variable, true og false istedet for å bruke True og False. Det trenger du ikke, i hvert fall ikke hvis du bruker v2.3 eller høyere.

 

En funksjon returnerer som regel et resultat. Noen ganger er det ok å la den jobbe på globale variable, men som oftest får du noe tilbake

 

 

f.eks

 

def htmlToText(html):
   div prosesering

  return text

 

eller

 

def isMemberOfTheCoolLeague(candidate):
   if candidate in memberlist:
        return True
   return False

 

t =  htmlToText(masseHtml)
if isMemberOfTheCoolLeague('birger')
   openDoor('birger')
else:
   assKickHard('birger')

 

EDIT:

 

Hvis vi ser på programmet ditt, så brukes return i

check_questions()

for å returnere True eller False alt ettersom svaret er rett eller ikke.

 

i run_test()

står det bare return, dvs funksjonen avslutter operasjonen der og returnerer None (ingenting) til kaller av funksjonen, dvs run_test(get_questions())

 

Det er fiktig å merke seg med return, f.eks

 

def syng_i_dusjen(navn):
   if navn == "Pekka":
       return
   if navn == "Gunn-Anita":
       return "Sooome daaaaay I'm gonna be somebodyyyy"

 

skriver du

print syng_i_dusjen('Pekka'), så vil output bli "None" og Gunn-Anitas sang vil aldri komme noen for øret, eller øyet. Funskjnen avbryter ved testen på om navn == "Pekka".

 

Skriver du print syng_i_dusjen('Roy'), så blir også output "None" for helt nederst i funksjonen står det "return None", selv om det er usynlig ;-)

 

Det er implisitt i alle funksjoner uten et eksplisitt return-statement til slutt.

Endret av zeitgeist
Lenke til kommentar

'return' er ingen funksjon, det er et direktiv som angir hvilken verdi som skal overleveres kalleren av funksjonen. Hvis du definerer en en funksjon som returnerer 'false' vil dette være verdien kalleren sitter igjen med (hvis returverdien tas vare på).

 

Jeg kommer dessverre ikke på noen bedre måte å forklare det på.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...