How to make if-elif-else statement in python more economical?

I have many if-elif-else statements in my code

if message == '0' or message == '3' or message == '5' or message == '7': ... elif message == '1' or message == '2' or message == '4' or message == '6' or message == '8': ... else: ... 

Is it possible to format this in a more economical way?

I tried this as follows:

 if message == '0' or '3' or '5' or '7': ... elif message == '1' or '2' or '4' or '6' or '8': ... else: ... 

But without success.

+4
source share
2 answers
 if message in ("0", "3", "5", "7"): ... elif message in ... 

will be one way.

If message always one character long, you can also use

 if message in "0357": .... 

But this is also true if message == "35" , therefore a warning.


(EDIT)

A brief explanation of why your approach did not work:

 if message == '0' or '3' or '5' or '7': 

interpreted as

 if (message == '0') or '3' or '5' or '7': 

and therefore always succeeds because '3' evaluates to True .

+6
source
 if message in '0357' : ... elif message in '12468' : ... else: ... 

In a more global way:

 if value in [elem0, elem1, ... ]: ... 
+1
source

Source: https://habr.com/ru/post/1309322/


All Articles