What are some other way to rewrite this if block?

Jussi Piitulainen jpiitula at ling.helsinki.fi
Mon Mar 18 15:10:07 CET 2013


Santosh Kumar <sntshkmr60 at gmail.com> writes:

> This simple script is about a public transport, here is the code:
> 
> def report_status(should_be_on, came_on):
>     if should_be_on < 0.0 or should_be_on > 24.0 or came_on < 0.0 or
> came_on > 24.0:
>         return 'time not in range'
>     elif should_be_on == came_on:
>         return 'on time'
>     elif should_be_on > came_on:
>         return 'early'
>     elif should_be_on < came_on:
>         return 'delayed'
>     else:
>         return 'something might be wrong'
> 
> print(report_status(123, 12.0))
> 
> I am looking forward of make the line starting with `if` short.
> 
> Any tips are welcome.

A double tip:

if (not (0.0 <= should_be_on <= 24.0) or
    not (0.0 <= came_on <= 24.0)):
   ...

You might want to raise an exception from the range-check branch
instead of returning a value. And raise an exception from the
else-branch, because that branch should never be reached.



More information about the Python-list mailing list