4 svar
43 visningar
julia.ehr 27
Postad: 1 okt 2023 11:36

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)

Janne491 277
Postad: 1 okt 2023 11:51

Skulle byta elif till if och prova😊

Hondel 1377
Postad: 1 okt 2023 11:52

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”

Laguna 30429
Postad: 1 okt 2023 11:55

Vad har du x till om du bara vill testa y?

julia.ehr 27
Postad: 1 okt 2023 12:56

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?  

Svara
Close