Depressure Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 (endret) 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 7. desember 2011 av Depressure Lenke til kommentar
etse Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 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
Lycantrophe Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 Sett b = 0 rett under def main(): Lenke til kommentar
etse Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 Sett b = 0 rett under def main(): Det vil jo ødelegge scriptet helt, siden B skal øke med 1 for hver gang løkken kjøres. Slik den er satt opp må B enten sendes som parameter inn til funksjonen, eller gjøres global. Lenke til kommentar
Lycantrophe Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 (endret) Selvfølgelig, stryk det, men idéen er den samme. b bør defineres innenfor metoden, ikke globalt. En bedre måte er forøvrig å passe b som argument til funksjonen fremfor å ha den global. Endret 7. desember 2011 av Lycantrophe Lenke til kommentar
Depressure Skrevet 7. desember 2011 Forfatter Del Skrevet 7. desember 2011 Tusen takk =) Det som lycan skrev om "argument" tok jeg ikke helt, men jeg skal google litt =) off topic, det som er snålt er jo at scriptet forandrer "fasong" veldig etter som jeg lærer =) Lenke til kommentar
Lycantrophe Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 (endret) Argument eller parameter er (som oftest) verdier du gir til funksjonen din. Jeg illustrerer med et eksempel. def add(a,b): return a+b print 'Sum:',add(2,3) gir: Sum: 5 Endret 7. desember 2011 av Lycantrophe Lenke til kommentar
Depressure Skrevet 7. desember 2011 Forfatter Del Skrevet 7. desember 2011 oi, den måtte bankest inn med hammer i mitt hode, men jeg tok den nå =) takker! Jeg skulle tydeligvis aldrig brukt så mye tid i cmd... Lenke til kommentar
Lycantrophe Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 Ikke vær redd, det kan være veldig diffust i starten (var det for meg). Lenke til kommentar
etse Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 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
Depressure Skrevet 7. desember 2011 Forfatter Del Skrevet 7. desember 2011 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
etse Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 (endret) 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 7. desember 2011 av etse Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå