John Salerno a écrit :
> I'm starting out with this:
> 
> try:
>     if int(text) > 0:
>         return True
>     else:
>         self.error_message()
>         return False
> except ValueError:
>     self.error_message()
>     return False
> 
> I rewrote it as this:
> 
> try:
>     int(text)
> except ValueError:
>     self.error_message()
>     return False
> else:
>     return True
> 
> I think it's much cleaner, but obviously I lost the test in the original 
> if statement.
> 
> So my question is, can I still retain this second structure and still 
> test for > 0, but not have any extra nesting?

solution 1:

     def wrong():
         raise ValueError

     try:
         int(text) > 0 or wrong()
     except ValueError:
         self.error_message()
         return False
     else:
         return True

But that's being-too-clever imho...

solution 2:

     def error_message():
         self.error_message()
         return False

     try:
         return int(text) > 0 or error_message()
     except ValueError:
         return error_message()

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to