
Concept explainers
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.
- Check whether the type is “GPA” using “if”.
- If it is true, sort the data based on the “GPA”.
- Use “break” to exit.
- Check whether the type is “name” using “elif”.
- If it is true, sort the data based on the “name”.
- Use “break” to exit.
- Check whether the type is “credits” using “if”.
- If it is true, sort the data based on the “credits”.
- Use “break” to exit.
-
- Write the data into the output file.
- Check whether the type is “GPA” using “if”.
- Get the type of input to sort.
- 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.
- Define the “get_Name()” method.
-
-
- Assign name hours and GPoints.
- Define the “_init_()” method.
- Call the “main()” function.

Explanation of Solution
Program:
File name: “gpasort.py”
#Import required module
from gpa import Student
#Deine 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):
#Openthe input file for reading
in_file = open(file_name, 'r')
#Create an empty list
Students = []
#Create ffor 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" >>> '))
#Check whether the type is "GPA"
if x == 'GPA':
#Sort the data based on the gpa
data.sort(key=Student.gpa)
s = "_(GPA)"
#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)
s = "_(name)"
#Use break to exit
break
#Check whether the type is "credits"
elif x == 'credits':
#Sort the data based on the credit points
data.sort(key=Student.getQ_Points)
s = "_(credits)"
#Use break to exit
break
#Otherwise
else:
#Print the string
print("Please try again.")
#Assign the output file
file_name = "GPA2" + s + ".py"
#Writ the data into output file
write_Students(data, file_name)
#Print the output file
print("The data has been written to", file_name)
#Call 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 function 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)
#Check 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()
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:
Output:
This program sorts student grade information by GPA, name, or credits.
Type "GPA", "name", or "credits" >>> name
The data has been written to GPA2_(name).py
>>>
Screenshot of output file “GPA2_(name).py after execution:
Additional output:
This program sorts student grade information by GPA, name, or credits.
Type "GPA", "name", or "credits" >>> GPA
The data has been written to GPA2_(GPA).py
>>>
Screenshot of output file “GPA2_(gpa).py after execution:
Want to see more full solutions like this?
Chapter 11 Solutions
Python Programming: An Introduction to Computer Science, 3rd Ed.
- Please no AI! Or if you do use AI, Check the work please! Thank you!arrow_forward(Dynamic Programming.) Recall the problem presented in Assign- ment 3 where given a list L of n ordered integers you're tasked with removing m of them such that the distance between the closest two remaining integers is maxi- mized. See Assignment 1 for further clarification and examples. As it turns out there is no (known) greedy algorithm to solve this problem. However, there is a dynamic programming solution. Devise a dynamic programming solution which determines the maximum distance between the closest two points after removing m numbers. Note, it doesn't need to return the resulting list itself. Hint 1: Your sub-problems should be of the form S(i, j), where S(i, j) returns the maximum distance of the closest two numbers when only considering removing j of the first i numbers in L. As an example if L [3, 4, 6, 8, 9, 12, 13, 15], then S(4, 1) = 2, since the closest two values of L' = [3,4,6,8] are 6 and 8 after removing 4 (note, 8-6 = = 2). = Hint 2: For the sub-problem S(i, j),…arrow_forward
- (Greedy Algorithms) Describe an efficient algorithm that, given a set {x1, x2, . . ., xn} of points on the real line, determines the smallest set of unit-length closed intervals that contains all of the given points. Argue that your algorithm is correct.arrow_forwardWhat does the value of the top variable indicate in this ArrayStack implementation? What will happen if we call pop on this stack? What value will be returned, and what changes will occur in the array and the top variable? 3. If we push the value "echo" onto the stack, where will it be stored in the array, and what will be the new value of top? 4. Explain why index 0 contains the string "alpha" even though top is currently 3. 5. What would the state of the stack look like (values in the array and value of top) after two consecutive pop 0 operations?arrow_forwardPlease solve and show all work. Suppose there are four routers between a source and a destination hosts. Ignoring fragmentation, an IP datagram sent from source to destination will travel over how many interfaces? How many forwarding tables will be indexed to move the datagram from the source to the destination?arrow_forward
- Please solve and show all work. When a large datagram is fragmented into multiple smaller datagrams, where are these smaller datagrams reassembled into a single large datagram?arrow_forwardPlease solve and show all steps. True or false? Consider congestion control in TCP. When the timer expires at the sender, the value of ssthresh is set to one-half of the last congestion window.arrow_forwardPlease solve and show all work. What are the purposes of the SNMP GetRequest and SetRequest messages?arrow_forward
- Please solve and show all steps. Three types of switching fabrics are discussed in our course. List and briefly describe each type. Which, if any, can send multiple packets across the fabric in parallel?arrow_forwardPlease solve and show steps. List the four broad classes of services that a transport protocol can provide. For each of the service classes, indicate if either UDP or TCP (or both) provides such a service.arrow_forwardPlease solve and show all work. What is the advantage of web caches, and how does it work?arrow_forward
- EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENTProgramming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:CengageProgramming with Microsoft Visual Basic 2017Computer ScienceISBN:9781337102124Author:Diane ZakPublisher:Cengage Learning
- Systems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage LearningC++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningC++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology Ptr




