Why Does My "if" Statement In Python Not Work?
I'm wondering why my 'if' statement isn't working. I get asked for the input, and nothing happens after. It won't print out whether it is A, B, C or D. def main(): printLetterG
Solution 1:
There are two issues:
- The
input
, insidemain
, needs to be converted to anint
- Currently, the
input
is astr
, which will never beTrue
when tested for membership inside ofA
,B
,C
orD
- Example:
'90' == 90
compares asFalse
, so'90' in A
isFalse
- Currently, the
- Use the membership operator,
in
, instead of the comparison operator,==
.
defmain():
printLetterGradeFromNumber(int(input("The grade as a number: ")))
defprintLetterGradeFromNumber(number_grade):
A = range(90, 100)
B = range(80, 89)
C = range(70, 79)
D = range(60, 69)
if number_grade in A:
print("That student gets an A")
elif number_grade in B:
print("That student gets a B")
elif number_grade in C:
print("That student gets a C")
elif number_grade in D:
print("That student gets a D")
return number_grade
main()
Output:
Thegradeasanumber: 90ThatstudentgetsanA
Alternate implementation:
- Don’t Forget NumPy!
numpy.digitize
digitize
returns theindex
ofvalue
, withinbins
.value < 60
returnsindex = 0
, whilevalue >= 90
returnsindex = 4
.- A letter grade is found, using the
index
ofgrades
. As such, the order ofgrades
must correspond tobins
.
from numpy import digitize
defprint_letter_grade():
value = int(input('The grade as a number: '))
grades = ['F', 'D', 'C', 'B', 'A']
index = digitize(value, bins=[60, 70, 80, 90])
print(f'The student gets an {grades[index]}')
Solution 2:
I hope this is what you are looking for
defprintLetterGradeFromNumber(number_grade):
#A = range(90, 100)#B = range(80, 89)#C = range(70, 79)#D = range(60, 69)if number_grade >= 90and number_grade <= 100:
print("That student gets an A")
if number_grade >= 80and number_grade <= 89:
print("That student gets a B")
elif number_grade >= 70and number_grade <= 79:
print("That student gets a C")
elif number_grade >= 60and number_grade <= 69:
print("That student gets a D")
return number_grade
Solution 3:
range(90, 100) equals (90, 91, 92, 93, 94, 95, 96, 97, 98, 99)
You need to use 'in' operator
if number_grade in A:
print("That student gets an A")
elif number_grade in B:
print("That student gets a B")
elif number_grade in C:
print("That student gets a C")
elif number_grade in D:
print("That student gets a D")
Solution 4:
You don’t need to define a function. Use a “For” loop.
Set your grades to A=range(90, 101). B=range(80, 90), C=range(70, 80), D=range(60, 70)
When you use ranges python excludes the upper bound integer
Post a Comment for "Why Does My "if" Statement In Python Not Work?"