Reputation: 775
I have a lot of 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 space-saving way?
I tried it this way:
if message == '0' or '3' or '5' or '7':
...
elif message == '1' or '2' or '4' or '6' or '8':
...
else:
...
But without success.
Upvotes: 4
Views: 1521
Reputation: 336228
if message in ("0", "3", "5", "7"):
...
elif message in ...
would be one way.
If message
is always one character long, you could also use
if message in "0357":
....
But this would also be true if message == "35"
, therefore the warning.
(EDIT)
A short explanation why your approach wasn't working:
if message == '0' or '3' or '5' or '7':
is interpreted as
if (message == '0') or '3' or '5' or '7':
and therefore always succeeds because '3'
evaluates to True
.
Upvotes: 6
Reputation: 739
if message in '0357' :
...
elif message in '12468' :
...
else:
...
In a more global way :
if value in [elem0, elem1, ... ]:
...
Upvotes: 1