Question

12.8 GPA reports using files Prompt the user by "Enter name of input file: " for...

12.8 GPA reports using files Prompt the user by "Enter name of input file: " for the name of an input file and open that file for reading. The two input files for the tests are already at the zyBooks site.They each have a list of student names with the course they have taken, of the form Jacobs, Anthony ECS10 4 B- ECS20 4 C+ ANS17 3 A ANS49H 2 D Wilson, Elaine ECS10 4 B+ ECS20 4 C+ ANS17 3 A ANS49H 2 D ANS100 5 B- with the student name on one line, and a list of that student's course names, units, and grades on a sequence of following lines, terminated by a blank line before the next student name line. The input will be terminated either by a second blank line where the next name would be, which will appear as just "\n", or by the file ending with either no new line character at the end of the last course line for the last student, or just one, which will result in just the empty string "" when reading in any more lines. (The input for the hidden second test ends with just one blank line after the last course.) To repeat this in a different way: You need to correctly handle 3 cases: a) The file ends at the end of the last course line, just after the last grade, with no \n character at all. b) The input file ends with a single \n character at the end of the last grade line (as is normal on all other lines). c) The file ends with two \n characters, one to end the last grade line, and one blank line, as would normally occur before another student name. The program should open and write an output file named "GPA_output.txt" of the form: Jacobs, Anthony 2.62 Wilson, Elaine 2.77 with each line containing a student name and the GPA, which must be computed by the program. The format of each line must have the name left adjusted, in a field with a total of 26 spaces, followed immediately by the GPA, with two decimal places. You can do this with a formatted output of the form: f.write("%-26s%.2f\n" % (student_name, GPA)) Note that the "\n" is needed at the end of the quoted format specification, because unlike print(), f.write() does not automatically put a new line character at the end of the line. The input given above is for the first test, and the file "GPA_input.txt" from which it was taken is in the canvas File Folder for "Week 9" of "Programs shown in class", so that you can use it for testing your program before submitting it. You will probably need to do such testing because unlike the other assignments, if your program has problems that prevent it from getting to the stage of writing the output file, the error reported will just be "Could not find file: GPA_output.txt" which is not very useful. The output file for this input, "GPA_output.txt" is also in the Week 9 folder for you to compare, since white space is important here.

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Hi,

Please find below the python code for above statement. Also see the attached picture for required indentation and output for the program. Please read the comments to understand the code. The program has been tested for all 3 scenarios mentioned i.e.

a. If the file ends without \n

b. If the file ends with 2 \n

c. If the file ends with 1 \n

PS: The Program will run irrespective of how it ends. Even if there are many \n at the end of file, the program will be fine.

PS: If you are satisfied with answer that you have got, please take a couple of seconds to rate the answer. Thanks.

GPA.py

#Take input from the user
filename=input('Enter name of input file: ')
total_units=0#Total number of units for a student
total_score=0#Total score of a student
#Assign a score to each grade. I have reduced 0.33 for each grade. Change here if you need to
grade={'A':4.0,'A-':3.67,'B+':3.34,'B':3.01,'B-':2.68,'C+':2.35,'C':2.02,'C-':1.69,'D+':1.36,'D':1.03}
try:
with open(filename,"r") as input_file:#Open the file for input(reading)
output_file=open("GPA_output.txt","w") #Create and open GPA_output.txt if it doesn't exist for writing
for student_record in input_file:#read from input file
if("," in student_record):#if there is a , that means this is the student name
student_name=student_record.strip('\n')#Remove \n from student name
continue
else:
if(" " in student_record):#If a line contains spaces then its the student's grades for a course
student=student_record.split(" ")#Split to find the coursename, units and grade
#student[0]=coursename student[1]=units student[2]=grade
total_units+=int(student[1])#Calculate total units for 1 student
total_score+=int(student[1])*grade[student[2].strip('\n')]#Find the total score of a student
#grade[student[2]] will lookup for the score that we initialized earlier
#if student has a grade as A then this will look up as grade['A'] which will return 4
#Find the total score as product of this grade and units for this course
continue
else:
if(total_units>0):#Check if score has been calculated for a student earlier
print("in")
GPA=total_score/total_units#Calculate the GPA
output_file.write("%-26s%.2f\n" % (student_name, GPA))#Write the GPA and Student Name in the required format
total_units=0#reset the units
total_score=0#reset the score
if(total_units>0):#Essential for the case when the file doesn't end with a new line(Check if total_units is not 0) which means a record is pending
#to be written to the file
GPA=total_score/total_units#Calculate the GPA
output_file.write("%-26s%.2f\n" % (student_name, GPA))#Write the GPA and Student Name in the required format
total_units=0#reset the units
total_score=0#reset the score
input_file.close()#Close the input file
output_file.close()#Close the output file
except IOError as e:
print("Problem in Opening the required file")#Print a message if file cannot be opened

#Take input from the user filename-inputlEnter name of input file:) total units:0#Total number of units for a student totalOutput:

RESTART : F: /PythonPrograms/GPA.ру Enter name of input file: GPA input.txt RESTART : F:/PythonPrograms/GPA.ру Enter name of

Input File:

GPA input.txt - Notepad File Edit Format View Help Jacobs, Anthony ECS10 4 B- ECS20 4 C+ ANS17 3 A ANS49H 2 D Wilson, Elaine

Output FIle

GPA output.bxt - Notepad File Edit Format View Help Jacobs, Anthony Wilson, Elaine 2.63 2.79

Add a comment
Know the answer?
Add Answer to:
12.8 GPA reports using files Prompt the user by "Enter name of input file: " for...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • 12.8 GPA reports using files This program is to compute and write to a file the...

    12.8 GPA reports using files This program is to compute and write to a file the GPA for student scores read from an input file. As in Lab 7.5, the point values of the grades are 4 for A, 3 for B, 2 for C, 1 for D, and 0 for F. Except for the grade A, where + has no effect, a + after the letter increases the point value by 0.3, and except for F, where a -...

  • Program 5 Due 10/25 C-String and Two-dimensional Array Use An input data file starts with a...

    Program 5 Due 10/25 C-String and Two-dimensional Array Use An input data file starts with a student's name (on one line). Then, for each course the student took last semester, the file has 2 data lines. The course name is on the first line. The second line has the student's grade average (0 to 100) and the number of credits for the course Sample data: Jon P. Washington, Jr. Computer Science I 81 4 PreCalculus 75 3 Biology I 88...

  • C++ please! (1) Prompt the user to enter the name of the input file. The file...

    C++ please! (1) Prompt the user to enter the name of the input file. The file will contain a text on a single line. Store the text in a string. Output the string. Ex: Enter file name: input1.txt File content: We'll continue our quest in space. There will be more shuttle flights and more shuttle crews and, yes, more volunteers, more civilians, more teachers in space. Nothing ends here; our hopes and our journeys continue! (2) Implement a PrintMenu() function,...

  • C++ (1) Write a program to prompt the user for an input and output file name....

    C++ (1) Write a program to prompt the user for an input and output file name. The program should check for errors in opening the files, and print the name of any file which has an error, and exit if an error occurs. For example, (user input shown in caps in first line, and in second case, trying to write to a folder which you may not have write authority in) Enter input filename: DOESNOTEXIST.T Error opening input file: DOESNOTEXIST.T...

  • implicit none !   Declare File Read Variables     CHARACTER(255) :: Line     INTEGER :: CP !...

    implicit none !   Declare File Read Variables     CHARACTER(255) :: Line     INTEGER :: CP ! Character position in Line     INTEGER :: File_Read_Status !   Declare character constants     CHARACTER :: Tab > ACHAR(1)     CHARACTER :: Space = " " !   Read all lines in the file         DO             READ(*,'(A)',iostat = File_Read_Status) Line !       Exit if end of file             IF (File_Read_Status < 0) EXIT !       Skip leading white space          DO CP = 1, LEN_TRIM(Line)              IF...

  • Write a x64 MASM program using ReadConsoleA and WriteConsoleA to prompt the user for their name....

    Write a x64 MASM program using ReadConsoleA and WriteConsoleA to prompt the user for their name. The program should then display the user's name surrounded by asterisks. Allow the name to be up to 30 characters long. Example (user input is boldface, and there are 28 asterisks on the top and bottom lines): What is your name? Kristin Jacobs **************************** *Kristin Jacobs * **************************** Copy / Paste a sample run from the console screen into your .asm file following your...

  • Write a program that would ask the user to enter an input file name, and an...

    Write a program that would ask the user to enter an input file name, and an output file name. Then the program reads the content of the input file, and read the data in each line as a number (double). These numbers represent the temperatures degrees in Fahrenheit for each day. The program should convert the temperature degrees to Celsius and then writes the numbers to the output file, with the number of day added to the beginning of the...

  • FOR JAVA Write a program that takes two command line arguments: an input file and an...

    FOR JAVA Write a program that takes two command line arguments: an input file and an output file. The program should read the input file and replace the last letter of each word with a * character and write the result to the output file. The program should maintain the input file's line separators. The program should catch all possible checked exceptions and display an informative message. Notes: This program can be written in a single main method Remember that...

  • Please write this in C. Write this code in Visual Studio and upload your Source.cpp file for checking (1) Write a program to prompt the user for an output file name and 2 input file names. The progra...

    Please write this in C. Write this code in Visual Studio and upload your Source.cpp file for checking (1) Write a program to prompt the user for an output file name and 2 input file names. The program should check for errors in opening the files, and print the name of any file which has an error, and exit if an error occurs opening any of the 3 For example, (user input shown in caps in first line) Enter first...

  • Write a Java program called Flying.java that, firstly, prompts (asks) the user to enter an input...

    Write a Java program called Flying.java that, firstly, prompts (asks) the user to enter an input file name. This is the name of a text file that can contain any number of records. A record in this file is a single line of text in the following format: Num of passengers^range^name^manufacturer^model where: Num of passengers is the total number of people in the plane. This represents an integer number, but remember that it is still part of the String so...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT