Here is the assignment... This program will have three functions, the main() create() and retrieve(). main() will call create() and then call retrieve() create() will prompt the user to enter any number of course name / grade pairs and write them to a file named grades.txt. Pressing Enter with no input value on the course name will exit the loop, close the file, print "File was created and closed" and return the bool value True to the main() retrieve()  will open and read grades.txt. The function then will print the course names and scores as shown below. The average score should be calculated as well as a simple GPA and displayed  to two decimal places and then return variable used for the GPA to the main() . See sample run below in which 4 course names were entered, but note that more or fewer courses could have been entered.   #Defining the function create() def create(): #open the file grades_file = open('grades.txt','w') while True: course_name = input("Enter course name or Enter to quit: ") #Storing the values if course_name == '': print("File was created and closed") break grade = int(input("Enter grade (integer) achieved: ")) line = course_name+','+str(grade)+'\n' grades_file.write(line) #close the file grades_file.close() return True #Defining the retrieve function def retrieve(): #Printing statement print("\nHere are your grades:") #Initializing the variables sum_of_grades = 0 count = 0 gpa=0 #open file grades_file = open('grades.txt','r') for line in grades_file: course,grade = line.strip().split(',') #finding sum sum_of_grades+=int(grade) #finding the grade if(int(grade)>=90): gpa+=4.0 elif(int(grade)>=80): gpa+=3.0 elif(int(grade)>=70): gpa+=2.0 elif(int(grade)>=60): gpa+=1.0 else: gpa+=0.0 #count how many grades are in total count+=1 gpa_cal = gpa/count print("{} score is {}".format(course,grade)) #find the average grade avg = sum_of_grades/count print("Average grade among your courses is {:.2f}".format(avg),"Your GPA is {:.2f}".format(gpa_cal)) return avg #Defining the main() def main(): #Calling the methods create() GPA = retrieve() main()

Programming Logic & Design Comprehensive
9th Edition
ISBN:9781337669405
Author:FARRELL
Publisher:FARRELL
Chapter7: File Handling And Applications
Section: Chapter Questions
Problem 15RQ
icon
Related questions
Question

My grades.txt file is not creating the correct output.  (I need it to look like the attached file).  When I try to fix it. The program has errors. 

Here is the assignment...

This program will have three functions, the main() create() and retrieve().

main() will call create() and then call retrieve()

create() will prompt the user to enter any number of course name / grade pairs and write them to a file named grades.txt. Pressing Enter with no input value on the course name will exit the loop, close the file, print "File was created and closed" and return the bool value True to the main()

retrieve()  will open and read grades.txt. The function then will print the course names and scores as shown below. The average score should be calculated as well as a simple GPA and displayed  to two decimal places and then return variable used for the GPA to the main() . See sample run below in which 4 course names were entered, but note that more or fewer courses could have been entered.

 

#Defining the function create()
def create():
#open the file
grades_file = open('grades.txt','w')
while True:
course_name = input("Enter course name or Enter to quit: ")
#Storing the values
if course_name == '':
print("File was created and closed")
break
grade = int(input("Enter grade (integer) achieved: "))
line = course_name+','+str(grade)+'\n'
grades_file.write(line)
#close the file
grades_file.close()
return True
#Defining the retrieve function
def retrieve():
#Printing statement
print("\nHere are your grades:")
#Initializing the variables
sum_of_grades = 0
count = 0
gpa=0
#open file
grades_file = open('grades.txt','r')
for line in grades_file:
course,grade = line.strip().split(',')
#finding sum
sum_of_grades+=int(grade)
#finding the grade
if(int(grade)>=90):
gpa+=4.0
elif(int(grade)>=80):
gpa+=3.0
elif(int(grade)>=70):
gpa+=2.0
elif(int(grade)>=60):
gpa+=1.0
else:
gpa+=0.0
#count how many grades are in total
count+=1
gpa_cal = gpa/count
print("{} score is {}".format(course,grade))
#find the average grade
avg = sum_of_grades/count
print("Average grade among your courses is {:.2f}".format(avg),"Your GPA is {:.2f}".format(gpa_cal))
return avg
#Defining the main()
def main():
#Calling the methods
create()
GPA = retrieve()
main()

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 5 images

Blurred answer
Knowledge Booster
Header Files
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning