python: Give samme variabel forskellige værdier?
Hej alle sammen
I forbindelse med at jeg hygger lidt med at lære lidt python er jeg stødt ind i et "problem". Hvis nu jeg ønsker at en variabel f.eks. y skal være "Ja" hvis noget er sandt eller "Nej" hvis noget er forkert, da har jeg forsøgt med:
(Dette er kun et kodeeksempel)
I princippet virker scriptet fint, men naturligvis brokker "konsolen" sig ved at sige:
" SyntaxWarning: name 'y' is assigned to before global declaration" .
Dette har jeg tolket som at der er en variabel der har to værdier. Hvilket jeg naturligvis godt kan se logikken i, men hvordan opnår jeg så det ønskede resultat, uden advarsler osv?
Håber min forklaring er til at forstå, ellers spørger I bare så må man jo prøve igen :-)
I forbindelse med at jeg hygger lidt med at lære lidt python er jeg stødt ind i et "problem". Hvis nu jeg ønsker at en variabel f.eks. y skal være "Ja" hvis noget er sandt eller "Nej" hvis noget er forkert, da har jeg forsøgt med:
(Dette er kun et kodeeksempel)
x = 1
if x == 1:
global y
y = "Hurra x var ligmed 1"
#print y
else:
global y
y = "Nej, x var ikke ligmed 1"
print y
I princippet virker scriptet fint, men naturligvis brokker "konsolen" sig ved at sige:
" SyntaxWarning: name 'y' is assigned to before global declaration" .
Dette har jeg tolket som at der er en variabel der har to værdier. Hvilket jeg naturligvis godt kan se logikken i, men hvordan opnår jeg så det ønskede resultat, uden advarsler osv?
Håber min forklaring er til at forstå, ellers spørger I bare så må man jo prøve igen :-)
Kommentarer8
Personligt ser jeg ingen
x = 1
if x == 1:
y = "Hurra x var ligmed 1"
#print y
else:
y = "Nej, x var ikke ligmed 1"
print y
Hvad er den specifikke grund til at du vil have den global?
@Marcus
Sandt sandt, det var
Sandt sandt, det var selvf. lige en fejl at jeg glemte at sige at problemet ligger i at jeg har lavet mit script som objekter.
Så f.eks.
x = 1
def er_x_ligmed_en():
if x == 1:
global y
y = "Hurra x var ligmed 1"
#print y
else:
global y
y = "Nej, x var ikke ligmed 1"
konklusion()
return
def konklusion():
print y
return
er_x_ligmed_en()
... hvilket betyder at y skal gøres global før den kan bruges i "konklusion" definationen.. :-)
Nu er jeg bestemt ikke
#3, det at hvis jeg ikke
Det er hvertfald det jeg har erfaret :-)
Du kunne sætte y = "" lige
Det tror jeg ville løse det ret nemt. Jeg kan se et problem i det hvis du senere bruger y igen, men du ville få samme problem hvis du brugte global.
froksen, du omtaler
Det rigtige vil vel være:
x
x = 1
def er_x_ligmed_en():
global y
if x == 1:
y = "Hurra x var ligmed 1"
#print y
else:
y = "Nej, x var ikke ligmed 1"
konklusion()
return
def konklusion():
global y
print(y)
return
er_x_ligmed_en()
Tror Python bliver lidt forvirret når du ellers definerer y som global to gange, selvom du aldrig når ind til begge dele kode. Og så bør du vænne dig til at bruge print som en funktion, altså print('a') i stedet for print 'a', da det sidste er uddateret og ikke længere eksisterer i Python 3.x.
@ninja.. Hehe, nu spiller
Desuden tak for tippet vedr. print funktionen, det vil jeg da huske fremover :-D