Python Programming: An Introduction to Computer Science, 3rd Ed.
Python Programming: An Introduction to Computer Science, 3rd Ed.
3rd Edition
ISBN: 9781590282755
Author: John Zelle
Publisher: Franklin, Beedle & Associates
Question
Book Icon
Chapter 11, Problem 3PE
Program Plan Intro

Modified gpasort program

Program plan:

  • Import the necessary modules in “grade_sort.py” file.
  • Define the “make_Student()” function,
    • Returns student record values to the caller.
  • Define the “read_Students()” function,
    • Returns the list of student record to the caller.
  • Define the “write_Students()” function,
    • Write the student record.
  • Define the “main()” function,
    • Get the input file.
    • Read the students record for the input file.
    • Make a “while” loop for “True”.
      • Get the type of input to sort.
      • Get the type of ordering from the user.
        • Check whether the type is “GPA” using “if”.
          • If it is true, sort the data based on the “GPA”.
          • Rename the file name.
          • Check whether the ordering is "D"
            • If it is true, reverse the data.
          • Use “break” to exit.
        • Check whether the type is “name” using “elif”.
          • If it is true, sort the data based on the “name”.
          • Rename the file name.
          • Check whether the ordering is "D"
            • If it is true, reverse the data.
          • Use “break” to exit.
        • Check whether the type is “credits” using “if”.
          • If it is true, sort the data based on the “credits”.
          • Rename the file name.
          • Check whether the ordering is "D"
            • If it is true, reverse the data.
          • Use “break” to exit.
              • Write the data into the output file.
  • Create a class Student in “gpa.py” file,
    • Define the “_init_()” method.
      • Assign name hours and GPoints.
              • Define the “get_Name()” method.
                • Return the name.
              • Define the “get_Hours()” method.
                • Return hours.
              • Define the “getQ_Points()” method.
                • Return GPoints.
              • Define the “gpa()” method.
                • Return gpa
              • Define the “make_Student()” method.
                • Return name, hours, and grade points.
              • Define the “main()” function.
  • Call the “main()” function.

Expert Solution & Answer
Check Mark

Explanation of Solution

Program:

File name: “gpasort.py

#Import required module

from gpa import Student

#Define the function make_Student()

def make_Student(info_Str):

    #Make multiple assignment

    Name, Hours, Gpoints = info_Str.split("\t")

    #Return constructor

    return Student(Name, Hours, Gpoints)

#Define the function read_Students()

def read_Students(file_name):

    #Open the input file for reading

    in_file = open(file_name, 'r')

    #Create an empty list

    Students = []

    #Create for loop to iterate over all lines in a file

    for line in in_file:

        #Append the line in a list

        Students.append(make_Student(line))

    #Close the input file

    in_file.close()

    #Return the list

    return Students

#Define the function write_Students()

def write_Students(Students, file_name):

    #Open output file to write

    out_file = open(file_name, 'w')

    #Create a for loop to iterate over list

    for s in Students:

        #Print output

        print("{0}\t{1}\t{2}".format(s.get_Name(), s.get_Hours(), s.getQ_Points()), file = out_file)

    #Close the output file

    out_file.close()

#Define the main() function

def main():

    #Print the string

    print("This program sorts student grade information by GPA, name, or credits.")

    #Get the input file

    file_name = 'gpa1.txt'

    #Assign the data return from read_Students()

    data = read_Students(file_name)

    #Create "while" loop

    while True:

        #Get the type

        x = (input('Type "GPA", "name", or "credits" >>>  '))

        #Get the type of ordering

        m = (input('Type "A" for ascending, "D" for descending.'))

        #Check whether the type is "GPA"

        if x == 'GPA':

            #Sort the data based on the gpa

            data.sort(key=Student.gpa)

            #Rename the file name

            s = "_(GPA)"

            #Check whether the ordering is "D"

            if m == "D":

                #Reverse the data

                data.reverse()

            #Use break to exit

            break

        #Check whether the type is "name"

        elif x == 'name':

            #Sort the data based on the name

            data.sort(key=Student.get_Name)

            #Rename the file name

            s = "_(name)"

            #Check whether the ordering is "D"

            if m == "D":

                #Reverse the data

                data.reverse()

            #Use break to exit

            break

        #Check whether the type is "credits"

        elif x == 'credits':

            #Sort the data based on the credits

            data.sort(key=Student.getQ_Points)

            #Rename the file name

            s = "_(credits)"

            #Check whether the ordering is "D"

            if m == "D":

                #Reverse the data

                data.reverse()

            #Use break to exit

            break

        #Otherwise

        else:

            #Print the string

            print("Please try again.")

    #Assign the output file

    filename = "GPA2" + s + ".py"

    #Write the data into output file

    write_Students(data, filename)

    #Print output file

    print("The data has been written to", filename)

#Call the main function

if __name__ == '__main__': main()

File name: “gpa.py”

#Create a class Student

class Student:

    #Define _init_() method

    def __init__(self, Name, Hours, Gpoints):

        self.Name = Name

        self.Hours = float(Hours)

        self.Gpoints = float(Gpoints)

    #Define get_Name() method

    def get_Name(self):

        #Return the name

        return self.Name

    #Define get_Hours()

    def get_Hours(self):

        #return hours

        return self.Hours

    #Define getQ_Points()

    def getQ_Points(self):

        #return grade points

        return self.Gpoints

    #Define the funcition gpa()

    def gpa(self):

        #return the value

        return self.Gpoints / self.Hours

#Define the function make_Student()

def make_Student(info_Str):

    #Make multiple assignment

    Name, Hours, Gpoints = info_Str.split("\t")

   #Return the constructor

    return Student(Name, Hours, Gpoints)

#Define the main() function

def main():

    #Open the input file for reading

    file_name = input("Enter the name of the grade file: ")

    in_file = open(file_name, 'r')

    #Set best to the record for the first student in the file

    best = make_Student(in_file.readline())

    #Process lines of the file using "for" loop

    for line in in_file:

        #Make the line of file into a student record

        s = make_Student(line)

        #Checck whether the student is best so far

        if s.gpa() > best.gpa():

            #Assign the best student record

            best = s

    #Close the input file

    in_file.close()

    #Print information about the best student

    print("The best student is:", best.get_Name())

    print("Hours:", best.get_Hours())

    print("GPA:", best.gpa())

if __name__ == '__main__':

    #Call the main() function

    main()

Sample Output

Contents of “gpa1.txt”

Adams, Henry    127    228

Computewell, Susan    100    400

DibbleBit, Denny    18    41.5

Jones, Jim    48.5    155

Smith, Frank    37    125.33

Screenshot of output file “GPA2.py” before execution:

Python Programming: An Introduction to Computer Science, 3rd Ed., Chapter 11, Problem 3PE , additional homework tip  1

Output:

This program sorts student grade information by GPA, name, or credits.

Type "GPA", "name", or "credits" >>>  name

Type "A" for ascending, "D" for descending.D

The data has been written to GPA2_(name).py

>>>

Screenshot of output file “GPA2_(name).py after execution:

Python Programming: An Introduction to Computer Science, 3rd Ed., Chapter 11, Problem 3PE , additional homework tip  2

Additional output:

This program sorts student grade information by GPA, name, or credits.

Type "GPA", "name", or "credits" >>>  GPA

Type "A" for ascending, "D" for descending.D

The data has been written to GPA2_(GPA).py

>>>

Screenshot of output file “GPA2_(gpa).py after execution:

Python Programming: An Introduction to Computer Science, 3rd Ed., Chapter 11, Problem 3PE , additional homework tip  3   

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
Assume, you have been given two lists. Your task is to multiply the first element of the first list, to the last element of the second list and store them in another list. Then, again multiply the second element of the first list, to the second last element of the second list, and so on. If any of your lists is out of element, and another list has some elements remaining, then just append the remaining elements to your final list and print the list.================================================ Given lists 1:list_one = [1, 4, 7, 5]list_two = [6, 1, 3, 9] Sample Output 1:[9, 12, 7, 30] Explanation 01: Here, from list_one’s 1st element, 1 has been multiplied with the last element of list_two 9. So, the product 1X9 =9 has been added to the answer.  Then, from list_one’s 2nd element, 4 has been multiplied with the 2nd the last element of list_two 3. So, the product 3X4 =12 has been added to the answer. And so on. ================================================Given lists 2:list_one =…
Generate a random list of 150 integers.  Calculate the Standard Deviation of the List.  Ask the user for an integer and determine if its exceptional or not.
In the "Common Array Algorithms" section, you learned how to find the position of an element in an array. Suppose you want to find the position of the second match. You could remove the first match and start over, but that would be wasteful. Instead, adapt the algorithm from that section so that it starts the search at a given position, not zero. Complete the following code.
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education