if-else-elif satsen
a = 34
b = 33
if b > a:
print("b is greater than a")
elif a == b:
print("a and b are equal")
else a > b:
print("a is greater than b")
får jag felet:
File "<ipython-input-10-f74be5b9afc2>", line 7
else a > b:
^
SyntaxError: invalid syntax
och anledningen till att jag får fel är att jag inte behöver ha med "a > b" utan koden skrivs enbart;
men vill förstår varför jag ite kan ha med det?
Varför vill du ha med det? "else" är till för att ta hand om allt som inte togs om hand av tidigare if eller elif. Om du inte vill det, får du använda en elif och sedan kanske inte ha någon else.
Laguna skrev:Varför vill du ha med det? "else" är till för att ta hand om allt som inte togs om hand av tidigare if eller elif. Om du inte vill det, får du använda en elif och sedan kanske inte ha någon else.
jaha, jag visste inte det. trodde det var bara en final grej man behövde ta med
Else behöver du inte ha, men om du ska ha den så ska det inte finnas någon a > b, dvs ingen kondition. För else är till att utföra någon om inte if eller elif blir true. Men om du vi ha den ändå så kan du ändra den till elif, då kan du ha en kondition.
När du skriver "else a > b" försöker du påstå att a är större än b istället för att fråga om a är större än b.
Jämför med en fråga: "else if a > b".
Rent generellt är jag av åsikten att undvika alla 'else' och 'else if' så mycket det går. Då får du en mer lättläst kod.
Nyckelordet "else" är något man nästan aldrig behöver. Om din if och elif inte är uppfylla så kan du likaväl printa direkt istället för att ha en else.
I en funktion där vi returnerar något kan vi returnera direkt och strunta i else etc.
Else är alltså väldigt sällan andvänbar.
Dracaena skrev:Nyckelordet "else" är något man nästan aldrig behöver. Om din if och elif inte är uppfylla så kan du likaväl printa direkt istället för att ha en else.
I en funktion där vi returnerar något kan vi returnera direkt och strunta i else etc.
Else är alltså väldigt sällan andvänbar.
Inte riktigt sant. Men som du skriver gällande en funktion så behövs inte något 'else' efter en 'return' . Det finns inget alternativ.
Jag har sett många som skriver (nu C++ kod):
if (a == b)
return 0;
else
return 1;
Här är 'else' totalt onödigt. Ett 'else' genererar en 'goto'. Koden blir större och de som kan programmering förstår att kodskrivaren inte riktigt förstår hur logiken fungerar.
Dagens kompilatorer kan skriva om det ena till det andra utan att man behöver optimera koden för hand. Dessutom är det bara i speciella sammanhang man behöver oroa sig för om det körs en instruktion för mycket.
Dracaena skrev:Nyckelordet "else" är något man nästan aldrig behöver. Om din if och elif inte är uppfylla så kan du likaväl printa direkt istället för att ha en else.
I en funktion där vi returnerar något kan vi returnera direkt och strunta i else etc.
Else är alltså väldigt sällan andvänbar.
Det håller jag inte med om.
Jag menar självklart inte att man aldrig ska använda 'else' även om jag inser nu att det låter som att jag påstår det i inlägg #6, mer av att man väldigt ofta inte behöver det. I många fall så används else helt i onödan.
Dracaena skrev:Jag menar självklart inte att man aldrig ska använda 'else' även om jag inser nu att det låter som att jag påstår det i inlägg #6, mer av att man väldigt ofta inte behöver det. I många fall så används else helt i onödan.
Jag förstår vad du menar men jag skulle vara försiktigt att uttrycka mig så. Det låter som att man helt enkelt kan utelämna 'else' i "många fall".