Posts: 18
Threads: 7
Joined: Jan 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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 ...
Posts: 8,167
Threads: 160
Joined: Sep 2016
Jan-21-2019, 09:40 AM
(This post was last modified: Jan-21-2019, 09:40 AM by buran.)
you need to convert all your inputs to numbers using int() . Otherwise you are comparing strings, not numbers
Posts: 18
Threads: 7
Joined: Jan 2019
Jan-21-2019, 10:12 AM
(This post was last modified: Jan-21-2019, 10:12 AM by MrGoat.)
(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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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))
|
Posts: 12,038
Threads: 487
Joined: Sep 2016
Jan-21-2019, 12:38 PM
(This post was last modified: Jan-21-2019, 12:38 PM by Larz60+.)
A better way to write this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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
Posts: 10
Threads: 0
Joined: Jan 2019
Your code is correct but it needs to be converted to int.
Python takes string as default input value.
|