"thebjorn" <[EMAIL PROTECTED]> wrote:

>   def age(born):
>       now = date.today()
>       birthday = date(now.year, born.month, born.day)
>       return now.year - born.year - (birthday > now and 1 or 0)

I don't get that last line.  There's two things in particular that are 
puzzling me.

1) What does "birthday > now" mean?  It sounds like you haven't been born 
yet.

2) I find the "and 1 or 0" part very confusing.  I can't remember all the 
minor rules about operator precedence, but I'm sure this works out to some 
clever hack involving boolean short-circuit evaluation to get around the 
lack of a ternary operator in python.  If I need to pull out the reference 
manual to decipher what an expression means, it's too complicated.  Try 
something like:

if birthday > now:
   return now.year - born.year - 1
else:
   return now.year - born.year

It takes up a little more space, but it's bog easy to understand without 
scratching your head or diving into the manual to refresh your memory of 
obscure language details.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to