Gå til innhold

[Løst][Python 2.7.2] Trøbbel global variabel


Anbefalte innlegg

Hei.

 

Dette er andre dagen jeg sitter med python så om jeg har bomma hardt her så tilgi meg. Jeg forstår ikke helt dette:

 

>>> global globvar
>>> globvar = 5
>>> print globvar
5
>>> def mod():
print globvar
globvar = globvar + 5
print globvar


>>> mod()

Traceback (most recent call last):
 File "<pyshell#84>", line 1, in <module>
   mod()
 File "<pyshell#83>", line 2, in mod
   print globvar
UnboundLocalError: local variable 'globvar' referenced before assignment
>>> 

 

Jeg forstår det at den ikke liker variablelen min: "globvar" som jeg iherdig har prøvd og gjøre global på toppen. Er det noen som kan peke meg i rett retning evt komme med en godt forklart workaround?

 

EDIT: tung simplifisering

Endret av Depressure
Lenke til kommentar
Videoannonse
Annonse

ikke definer den som global i toppen av scriptet, men inni funksjonen.

Men generelt, prøv å unngå å bruke globale variabler, i de fleste tilfeller er det bad practice, og man gjør det mye bedre med å enten lage en klasse eller ved å sende variabelen som en parameter til funksjonen.

 

from random import randrange
from time import sleep
b = 0

def main():
   a = False
   global b
   while a == False:
       d = randrange(3, 6)
       c = randrange(1, 4)
       if c == 1:
           b = b + 1  
           print "B is " + str(b)
           print "C is " + str(c)
           print "waiting " + str(d) + " sec"
           sleep(d)
       if c == 2:
           b = b + 1
           print "B is " + str(b)
           print "C is " + str(c)
           print "waiting " + str(d) + " sec"
           sleep(d)
       if c == 3:
           if b < 5:
               main()
           a = True
           print "B is " + str(b)
           print "C is " + str(c)
           print "waiting " + str(d) + " sec"
           sleep(d)

def end():
   print('nice work')

main()
end ()

 

Ikke forstår jeg hvorfor du har rekursivitet inni en while-loop, det ble jo veldig smør på flesk der.

Lenke til kommentar

Programmering er vanskelig, og de første stegene er veldig bratte og tunge. Så du er ikke den eneste som sliter i begynnelsen.

Det som er viktig er at man ikke gir opp selv om man møter mye mot gang, og at man tørr å leke seg litt og prøve å gjøre oppgaver selv om de ikke står i boka.

Lenke til kommentar

ja, sannheten er at jeg begynte og lese på python for x antall år siden, men fatta svært lite da, siden har jeg lest meg litt opp på java og c#.net før jeg igår ved tilfeldigheter plutselig forstod py mye bedre. Tror det var den java boka som gjorde susen...

 

uansett hodet mitt trenger tydeligvis litt omstilling =)

 

Programmering er vanskelig, og de første stegene er veldig bratte og tunge. Så du er ikke den eneste som sliter i begynnelsen.

Det som er viktig er at man ikke gir opp selv om man møter mye mot gang, og at man tørr å leke seg litt og prøve å gjøre oppgaver selv om de ikke står i boka.

ja det jeg har funnet ut er at jeg har ofte svært lite og hente fra "bok-oppgaver" og heller bare må hive meg uti det når jeg har en ide til noe og scripte/programere og lære imens =)

Lenke til kommentar

ja, sannheten er at jeg begynte og lese på python for x antall år siden, men fatta svært lite da, siden har jeg lest meg litt opp på java og c#.net før jeg igår ved tilfeldigheter plutselig forstod py mye bedre. Tror det var den java boka som gjorde susen...

 

uansett hodet mitt trenger tydeligvis litt omstilling =)

Etter å selv ha vært informatikk student i tre år, har jeg opplevd veldig mange folk som er nye til programmering. Og jeg kan love deg at absolutt alle har det samme problemet i begynnelsen; alt er helt gresk. Men på et eller annet punkt begynner man plutselig bare å forstå tingene og får til tankegangen; og da blir alt mye enklere, og man lærer seg også nye ting lettere. De første månedene med programmering er absolutt de værste, etter det er det bare gøy :)

 

ja det jeg har funnet ut er at jeg har ofte svært lite og hente fra "bok-oppgaver" og heller bare må hive meg uti det når jeg har en ide til noe og scripte/programere og lære imens =)
Det er veldig mye å hente ut å lære av å gjøre bok-oppgaver; men man må ikke bare gjøre disse. Lag deg et større prosjekt du jobber med i tillegg og gjør begge deler. Bok oppgavene er ment til å lære deg spesifikke ting, og om du har et prosjekt ved siden av i tillegg kan du prøve å implementere disse tingene inn i prosjektet ditt.

 

Personlig synes jeg det å lage små enkle spill er en veldig god ting å ha som sideprosjekt. Du kan f.eks. laste ned "PyGame" som er et tillegg til Python for å lage enkle spill. Så kan du etterhvert jobbe med å lage din egen versjon av spillene "

" og "
". (men jobb med bok-oppgavene, og les og gjør litt andre ting samtidig som du jobber med disse). Dette vil ta tid og er en del arbeid som nybegynner men du vil lære masse ved å lage disse spillene :) Endret av etse
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...