Python Forum
Number within range - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Number within range (/thread-15540.html)



Number within range - MrGoat - Jan-21-2019

So, this was the question description I was given :

# 6.Write a Python function to check whether a number is in a given range.

Below is my code :

print("Enter number: ")
number = input()

print("Enter start of range: ")
start_of_range = input()

print("Enter end of range: ")
end_of_range = input()

def in_range(number, start_of_range, end_of_range):
    if number >= start_of_range and number <= end_of_range:
        print("Number is within given range")
    else:
        print("Number is not within given range")

in_range(number, start_of_range, end_of_range)
Strange thing is when I type in numbers that are in range, I get the "Number is not within range" message. For example, number = 5, start_of_range = 1 , end_of_range = 10 gives the message "Number is not within range" when in fact the answer should be "Number is within range". Can anyone please help spot the error? Thanks alot ...


RE: Number within range - buran - Jan-21-2019

you need to convert all your inputs to numbers using int(). Otherwise you are comparing strings, not numbers


RE: Number within range - MrGoat - Jan-21-2019

(Jan-21-2019, 09:40 AM)buran Wrote: you need to convert all your inputs to numbers using int(). Otherwise you are comparing strings, not numbers

I converted all inputs to numbers but got an invalid syntax message :

print("Enter number: ")
number = input()

print("Enter start of range: ")
start_of_range = input()

print("Enter end of range: ")
end_of_range = input()

def in_range(int(number), int(start_of_range), int(end_of_range)):
    if int(number) >= int(start_of_range) and int(number) <= int(end_of_range):
        print("Number is within given range")
    else:
        print("Number is not within given range")

in_range(int(number), int(start_of_range), int(end_of_range))
Error message :

Error:
CaiGengYangs-MacBook-Pro-2:OwnExercise---Functions caigengyang$ python3 Qn6.py File "Qn6.py", line 13 def in_range(int(number), int(start_of_range), int(end_of_range)): ^ SyntaxError: invalid syntax CaiGengYangs-MacBook-Pro-2:OwnExercise---Functions caigengyang$ python3 Qn6.py File "Qn6.py", line 13 def in_range(int(number), int(start_of_range), int(end_of_range)): ^ SyntaxError: invalid syntax CaiGengYangs-MacBook-Pro-2:OwnExercise---Functions caigengyang$ python3 Qn6.py File "Qn6.py", line 13 def in_range(int(number), int(start_of_range), int(end_of_range)): ^ SyntaxError: invalid syntax

(Jan-21-2019, 10:07 AM)MrGoat Wrote:
(Jan-21-2019, 09:40 AM)buran Wrote: you need to convert all your inputs to numbers using int(). Otherwise you are comparing strings, not numbers

I converted all inputs to numbers but got an invalid syntax message :

print("Enter number: ")
number = input()

print("Enter start of range: ")
start_of_range = input()

print("Enter end of range: ")
end_of_range = input()

def in_range(int(number), int(start_of_range), int(end_of_range)):
    if int(number) >= int(start_of_range) and int(number) <= int(end_of_range):
        print("Number is within given range")
    else:
        print("Number is not within given range")

in_range(int(number), int(start_of_range), int(end_of_range))
Error message :

Error:
CaiGengYangs-MacBook-Pro-2:OwnExercise---Functions caigengyang$ python3 Qn6.py File "Qn6.py", line 13 def in_range(int(number), int(start_of_range), int(end_of_range)): ^ SyntaxError: invalid syntax CaiGengYangs-MacBook-Pro-2:OwnExercise---Functions caigengyang$ python3 Qn6.py File "Qn6.py", line 13 def in_range(int(number), int(start_of_range), int(end_of_range)): ^ SyntaxError: invalid syntax CaiGengYangs-MacBook-Pro-2:OwnExercise---Functions caigengyang$ python3 Qn6.py File "Qn6.py", line 13 def in_range(int(number), int(start_of_range), int(end_of_range)): ^ SyntaxError: invalid syntax




Oh ok I got it ... here's the code. The initial error that I made was that I should not have converted the inputs into integers inside the function declaration ... it gives an error message.

print("Enter number: ")
number = input()

print("Enter start of range: ")
start_of_range = input()

print("Enter end of range: ")
end_of_range = input()

def in_range(number, start_of_range, end_of_range):
    if int(number) >= int(start_of_range) and int(number) <= int(end_of_range):
        print("Number is within given range")
    else:
        print("Number is not within given range")

in_range(int(number), int(start_of_range), int(end_of_range))



RE: Number within range - Larz60+ - Jan-21-2019

A better way to write this:
def get_int(itext):
    num = None
    while not isinstance(num, int):
        try:
            value = input(f'{itext}: ')
            num = int(value)
        except ValueError:
            print('Please -- integers only')
    return num

def main():
    number = get_int("Enter number")
    start_of_range = get_int("Enter start of range")
    end_of_range = get_int("Enter end of range")


if __name__ == '__main__'
    main()
test:
Output:
Enter number: Jimbo Please -- integers only Enter number: 45.2 Please -- integers only Enter number: 15 Enter start of range: 7 Enter end of range: 14



RE: Number within range - aakashjha001 - Jan-27-2019

Your code is correct but it needs to be converted to int.
Python takes string as default input value.