NameError
Hej!
Jag har problem med följande kod här nedan. (Har ingen erfarenhet i programmering innan, läser just nu en högskolekurs i python).
Det jag vill är att programmet ska skriva ut "blue" om talet y är jämnt, och "white " om talet är udda. När jag skriver ett jämnt tal i y, så funkar det. Men inte när jag skriver in ett udda tal, då står det att "color" inte är definierat. Varför definierar den inte color när jag skriver in ett udda tal i y? Har testat skriva om elif satsen som: elif (x=="a") or (x=="c") and (y%2==1):
Men funkar inte det heller, utan blir samma namn fel. Varför definierar den inte namnet när jag skriver ett udda tal?
x="c"
y=4
if x=="a" or x=="c":
if y%2==0:
color="blue"
elif x=="a" or x=="c":
if y%2==1:
color="white"
print(color)
Skulle byta elif till if och prova😊
Det är för att koden går alltid in i första ifsatsen. Och elif betyder ”else if”, dvs, om den INTE går in i första satsen kommer den titta på den raden. Om den däremot går in i första if-satsen kommer den inte ens titta på elif-biten. Och därmed kommer den inte titta på den del av koden som kollar om talet är udda.
så ett annat sätt är att göra på detta sätt
if x=="a" or x=="c":
if y%2==0:
color="blue"
elif y%2==1:
color="white”
Vad har du x till om du bara vill testa y?
Okej, tack så mycket! Så om jag förstått det rätt, programmet kollar första raden först, if-satsen, om villkoret x=="a" or x=="c": och if y%2==0 är sant. Är båda dessa villkoren sanna så skriver den ut handlingen, d.v.s "blue" här? Sedan går den inte vidare till nästa rad, eftersom villkoret här var sant?
Så när man döper x="c" och y=5, så stämmer villkoret för x=="c", men inte för if y%2==0, och därför skriver den ut NameError för color?