Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Number within range
#1
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 ...
Reply
#2
you need to convert all your inputs to numbers using int(). Otherwise you are comparing strings, not numbers
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
(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))
Reply
#4
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
Reply
#5
Your code is correct but it needs to be converted to int.
Python takes string as default input value.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  matplotlib x axis range goes over the set range Pedroski55 5 3,111 Nov-21-2021, 08:40 AM
Last Post: paul18fr
  Number range? rusty11 5 2,601 Feb-18-2020, 09:45 PM
Last Post: rusty11
  Define a range, return all numbers of range that are NOT in csv data KiNeMs 18 6,879 Jan-24-2020, 06:19 AM
Last Post: KiNeMs
  Is 2 a prime number? for loop & range fuction in python docs says yes, mine says no. allusernametaken 4 2,846 Nov-17-2019, 02:56 AM
Last Post: allusernametaken

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020