444,089 Members | 2,432 Online Need help? Post your question and get tips & solutions from a community of 444,089 IT Pros & Developers. It's quick & easy.

# Problems with if/elif statement syntax

 P: n/a 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 Nov 22 '07 #1
6 Replies

 P: n/a On Nov 22, 11:09 am, Neil Webster = 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. Nov 22 '07 #2

 P: n/a On Nov 22, 12:16 pm, oj = 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) Nov 22 '07 #3

 P: n/a On 22 Nov, 12:09, Neil Webster = 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

 P: n/a On Nov 22, 12:33 pm, "riqu...@gmail.com" = 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 