This is my first program in Python and I am having some trouble so forgive me if I have some simply syntax issues.
I am writing a program that calculates a student’s final score based on one exam grade worth 60% and 7 other test scores worth a combined 40% of the final grade. The user is asked to input the one exam score then asked to input the 7 test scores which are read in a loop. The letter grade is then determined from the final score calculated from the exam and tests. After that a grade comment is printed corresponding to the letter grade given to the student. This is my code so far:
def read_test_scores() : print("ENTER STUDENT ID: ") id = int(input()) print("ENTER EXAM SCORE: ") exam = int(input()) print("ENTER ALL TEST SCORES: ") score1 = int(input()) score2 = int(input()) score3 = int(input()) score4 = int(input()) score5 = int(input()) score6 = int(input()) score7 = int(input()) sum = (score1 + score2 + score3 + score4 + score5 + score6 + score7) tavge = sum/7 return tavge def compute_final_score(tavge, exam) : final_score = 0.4 * tavge + 0.6 * exam return final_score def get_letter_grade(final_score) : if 90 <= final_score <= 100: grade = 'A' elif 80 <= final_score <= 89: grade = 'B' elif 70 <= final_score <= 79: grade = 'C' elif 60 <= final_score <= 69: grade = 'D' else: grade = 'F' return grade def print_comment(grade) : if grade = 'A': print "COMMENT: Very Good" elif grade = 'B': print "COMMENT: Good" elif grade = 'C': print "COMMENT: Satisfactory" elif grade = 'D': print "COMMENT: Need Improvement" elif grade = 'F' print "COMMENT: Poor" read_test_scores() print "TEST AVERAGE IS: " + str(tavge) compute_final_score() print "FINAL SCORE IS: " + str(final_score) get_letter_grade(final_score) print "LETTER GRADE IS: " + str(grade) print_comment(grade)
Advertisement
Answer
Here’s my answer. The code should run. Notes are inserted as comments.
# NOTE: I haven't checked whether your math is right, or # if the computed values are correct. I did however get your # script to work. def read_test_scores(): print("ENTER STUDENT ID: ") id = int(input()) print("ENTER EXAM SCORE: ") exam = int(input()) print("ENTER ALL TEST SCORES: ") score1 = int(input()) score2 = int(input()) score3 = int(input()) score4 = int(input()) score5 = int(input()) score6 = int(input()) score7 = int(input()) sum = (score1 + score2 + score3 + score4 + score5 + score6 + score7) tavge = sum / 7.0 # NOTE: if you want to use any variables from this function, # then you have to "bring them outside" by "returning" # them. Here, I return the values tavge, id, and exam. I noticed # that bringing out "exam" is necessary since you'll # be using it later on. return tavge, id, exam def compute_final_score(tavge, exam): final_score = 0.4 * tavge + 0.6 * exam return final_score def get_letter_grade(final_score): if 90 <= final_score <= 100: grade = 'A' elif 80 <= final_score <= 89: grade = 'B' elif 70 <= final_score <= 79: grade = 'C' elif 60 <= final_score <= 69: grade = 'D' else: grade = 'F' return grade def print_comment(grade): # NOTE `=` is for assignment. We use it when we want to # tell python to make a variable mean something. For example: # a = "some_name" basically means that when we call a, it would # return the string "some_name". # What you want to use here is `==` which is the equality operator. # This checks whether or thing are equal. if grade == 'A': print("COMMENT: Very Good") elif grade == 'B': print("COMMENT: Good") elif grade == 'C': print("COMMENT: Satisfactory") elif grade == 'D': print("COMMENT: Need Improvement") elif grade == 'F': print("COMMENT: Poor") # NOTE 1: you need to assign the function results to a # variable (or variables), otherwise, the result or return value # will go nowhere and you can't use it tavge, id, exam = read_test_scores() print "TEST AVERAGE IS: " + str(tavge) # NOTE 2: variable names do not have to be the same as # the name in their respective functions. Here, you can see # that it will still run even if I changed the variable # name final_score to my_variable. Although, of course, using # final_score would still work. # NOTE 3: the final_score function requires 2 inputs, # namely tavge and exam. This basically means that you have to feed # it with these 2 values for it to work. I took the # tavge and exam variables as the results from your read_test_scores # function my_variable = compute_final_score(tavge, exam) print("FINAL SCORE IS: " + str(my_variable)) grade = get_letter_grade(my_variable) print("LETTER GRADE IS: " + str(grade)) print_comment(grade) # FINAL NOTE: I haven't commented regarding coding style etc (like say # for instance, there are best practices regarding variable names # within functions, that is, if they should be similar to variable names # outside the function), but regardless, the code is a good start. I # would also advise you to try to narrow down your question first # before posting. This can be done by running your code, and searching # the internet for the particular erro messages, and if you're still stuck, # ask here on stackoverflow.