Problems with if/elif statement syntax

Ricardo Aráoz ricaraoz at gmail.com
Fri Nov 23 13:28:30 CET 2007


cokofreedom at gmail.com wrote:
> On Nov 22, 12:33 pm, "riqu... at gmail.com" <riqu... at gmail.com> wrote:
>> On 22 Nov, 12:09, 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
>> as Oliver pointed out, check if you're not compairing "a" as a string
>>
>> I wanted to let you know that you can write the above conditions in a
>> more natural way, using the a<x<b idiom
>>
>> e.g.
>>
>> x=int(raw_input("write a number"))
>> if 5<=x<30:
>>     print 'x is between 5 and 30'
> 
> Argh, I really dislike raw_input. Though it helps to remind me to use
> Try:Except blocks a lot.


Hasn't anyone TRIED the code? I did, with a = 30 and c = 'x' radius
comes out as 250. So it seems the problem is somewhere else and not in
this bit of code.






More information about the Python-list mailing list