10 svar
292 visningar
sannakarlsson1337 590
Postad: 2 dec 2021 13:30

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?

Laguna Online 30711
Postad: 2 dec 2021 13:52

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.

sannakarlsson1337 590
Postad: 2 dec 2021 13:53
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

Tarekham 8
Postad: 3 dec 2021 22:34

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.

Peter_ 470 – Avstängd
Postad: 5 dec 2021 13:58

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.

Fermatrix 7841 – Fd. Medlem
Postad: 5 dec 2021 14:20

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. 

Peter_ 470 – Avstängd
Postad: 5 dec 2021 14:37
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.

Laguna Online 30711
Postad: 5 dec 2021 17:42

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.

Laguna Online 30711
Postad: 5 dec 2021 17:43
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.

Fermatrix 7841 – Fd. Medlem
Postad: 5 dec 2021 17:54

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.

Peter_ 470 – Avstängd
Postad: 5 dec 2021 18:10 Redigerad: 5 dec 2021 18:11
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".

Svara
Close