Problems with if/elif statement syntax

cokofreedom at gmail.com cokofreedom at gmail.com
Thu Nov 22 12:29:29 CET 2007


On Nov 22, 12:16 pm, oj <ojee... at gmail.com> wrote:
> On Nov 22, 11:09 am, Neil Webster <nswebs... at gmail.com> 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
>
> How is 'a' getting set?
>
> My first thought, is that a is for some reason a string, instead of a
> number, and the comparisons aren't doing what you expect.
>
> >>> a = "10"
> >>> a < 1000
>
> False
>
> If a is coming from user input, or from a web request or something,
> make sure it's the correct type.
>
> -Oliver.

I would also look to write them this way
         if 20 <= a < 100:
                  # do something

But you should ensure A is an integer / float, you can do this by
running;

print type(a)



More information about the Python-list mailing list