Neil Webster wrote:
> Hi all,
> 
> I'm sure I'm doing something wrong but after lots of searching and
> reading I can't work it out and was wondering if anybody can help?
> 
> I've got the following block of code:
>       if a >= 20 and a < 100:
>               if c == "c":
>                       radius = 500
>               else:
>                       radius = 250
>       elif (a >= 100) and (a < 500):
>               radius = 500
>       elif (a >= 500) and (a < 1000):
>               radius = 1000
>       elif (a >= 1000) and (a < 3000):
>               radius = 1500
>       elif (a >= 3000) and (a < 5000):
>               radius = 2000
>       else:
>               radius = 4000
> 
> No matter what value goes in for 'a' the radius always comes out as
> 4000.
> 
> What am I doing wrong?
> 
> Cheers
> 
> Neil
You might try something like:

     BOUNDS = [(500, 500), (1000, 1000),
               (3000, 1500), (5000, 2000), (0, 4000)]
     if a < 20:
         raise ValueError('Too tiny: %r' % a)
     if a < 100:
         if c == "c":
             radius = 500
         else:
             radius = 250
     else:
         for limit, radius in bounds:
             if a < limit:
                 break


on the theory that it makes it easier to see what you
are driving the number towards.  I'd even add an upper bound
check myself, so I could see other garbage coming in.

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

Reply via email to