Hi all,
I am fairly new to both Python & programming, and am attempting to create a function that will test whether some user input is an integer between 10 and 89, but the check isn't happening...
def check_range(myrange): if range(myrange) != range(10,89): return "False" else: return "True"
...this gets called later via: if check_range(input): done = "True" return int(input)
What am I doing wrong?
Thanks!
Hi Marc,
Welcome to Python and the list. :-)
Others have pointed out how to solve your immediate problem with in or a comparison, and that you can just return True and False unquoted. (They are special builtin objects, so making strings for them isn't needed.)
A minor correction to Kent's suggestion, though. He suggested to use 10 < x < 90, but since I gather you want 10 to return True, you need 9 < x < 90:
>>> 10 < 10 < 90 False >>> 9 < 10 < 90 True
This sort of thing is an "off by 1 error" and will happen to you all the time :-(
I have a some style suggestions for you, too.
Try it this way:
>>> def check_in_range(value): in_range = False if 9 < value < 90: in_range = True return in_range
>>> check_in_range(35) True
This way, by setting a name to point to False, and over-riding that when the test is met, there is only a single return statement. That is often considered a good thing. This function is too small for it to matter lots, but have multiple returns can make the debugging a bit harder.
Another tip is that for debugging such things it often helps to use print statements when things don't go as expected. If you'd added them to your original function like so:
>>> def check_range(myrange): print range(myrange) print range(2,5) if range(myrange) != range(2,5): return "False" else: return "True" >>> check_range(3) [0, 1, 2] [2, 3, 4] 'False'
The problem would have likely been much more clear.
HTH,
Brian vdB _______________________________________________ Tutor maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/tutor