How to make a grade calculator in Python
You need to compute percentage
under the print
case, this should get you what you want:
T_marks = 1100
data = {}
while True:
ask = input("What do you want? ")
if ask == "y":
name = input("Enter your name: ")
marks = int(input("Enter marks: "))
data[name] = marks
elif ask == "print":
for (key,value) in data.items():
# NOTE percentage is under the case when user asks for print
percentage =(value / T_marks) * 100
print(key,"::",value)
if percentage > 90:
print("Passed with A grade")
elif percentage >= 70 and percentage < 90:
print("Passed with B grade")
elif percentage >= 60 and percentage < 70:
print("Passed with C grade")
elif percentage >= 50 and percentage < 60:
print("passed with D Grade")
else:
print("You failed")
else:
print("Your work has ended")
break
Also two hints: This code will output "You failed"
if someone got a grade of 90. You need to set equality at 90 for one of the cases. Also python has simplified comparisons where and
is not needed. Here is a simplified version, and corrected for case of 90 to get an A grade:
T_marks = 1100
data = {}
while True:
ask = input("What do you want? ")
if ask == "y":
name = input("Enter your name: ")
marks = int(input("Enter marks: "))
data[name] = marks
elif ask == "print":
for (key,value) in data.items():
percentage =(value / T_marks) * 100
print(key,"::",value)
if percentage >= 90:
print("Passed with A grade")
elif 90 > percentage >= 70:
print("Passed with B grade")
elif 70 > percentage >= 60:
print("Passed with C grade")
elif 60 > percentage >= 50:
print("passed with D Grade")
else:
print("You failed")
else:
print("Your work has ended")
break
Python - Grade Calculator
Again, just like other posts said, you have print
twice. Also, your logic doesn't look right and here is something for your reference:
def ComputeGrade(score):
if score > 0 and score <= 1:
if score < 0.6:
print("F")
elif score < 0.7:
print("D")
elif score < 0.8:
print("C")
elif score < 0.9:
print("B")
else:
print("A")
else:
print("Bad Score")
try:
score = float(input("Enter Score: "))
ComputeGrade(score)
except ValueError as e:
print ("Bad Score")
Grade calculator range and ValueError - Python
Just for fun, let's make it a Match Case statement:
Since you only accept integers, we can take and assign score to input with :=
, then check if it's valid with str.isnumeric
. If that's true then we'll make score
an integer :=
and check if it's between 0 and 100.
We'll change the input statement if they don't put valid input the first time around.
def grades():
text = "Please enter your score between 0 and 100: "
while True:
if ((score := input(text)).isnumeric() and
(score := int(score)) in range(0, 101)):
break
else:
text = "Incorrect value. Please enter your score between 0 and 100: "
match score:
case x if x >= 90 : grade = 'A'
case x if x >= 80 : grade = 'B'
case x if x >= 70 : grade = 'C'
case x if x >= 60 : grade = 'D'
case x if x >= 50 : grade = 'E'
case _ : grade = 'F'
print(f'Grade: {grade}')
Please note that this will only work in Python 3.10
or greater.
Related Topics
Split a Large Json File into Multiple Smaller Files
Importerror: No Module Named Sklearn (Python)
Get All Rows That Have Same Value in Pandas
Python Replace Empty Strings in a List With Values from a Different List
How to Correct Typeerror: Unicode-Objects Must Be Encoded Before Hashing
How to Pass a .Txt File to a Function in Python
How to Get a Random Value from Dictionary
Sort List Based on Another List
Convert CSV File to Pipe Delimited File in Python
Retrieve Top N in Each Group of a Dataframe in Pyspark
Valueerror: X and Y Must Be the Same Size
How to Make a Grade Calculator in Python
Importerror: No Module Named Bs4 (Beautifulsoup)
Regular Expression for Double and Integer Validation
How to Drop Rows of Pandas Dataframe Whose Value in a Certain Column Is Nan
How to Display Index During List Iteration With Django
Python: Filenotfounderror: [Winerror 3] the System Cannot Find the Path Specified: ''