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.
-
- Check whether the type is “GPA” using “if”.
- 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
#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()
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
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:
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:
Want to see more full solutions like this?
Chapter 11 Solutions
Python Programming: An Introduction to Computer Science, 3rd Ed.
- * allSame returns true if all of the elements in list have the same value. * allSame returns false if any two elements in list have different values. * The array may be empty and it may contain duplicate values. * * Your solution should contain at most one loop. You may not use recursion. * Your solution must not call any other functions. * Here are some examples (using "==" informally): * * * * * * * * true == allSame (new double[] { }) true == allSame(new double[] {11}) true == allSame (new double[] { 11, 11, 11, 11 }) false == allSame(new double[] { 11, 11, 11, 22 }) false == allSame (new double[] { 11, 11, 22, 11 }) true == allSame (new double[] { 22, 22, 22, 22 }) * */ public static boolean allSame (double[] list) { return StdRandom.bernoulli(); //TODO: fix thisarrow_forwardcreate a piece of code that demonstrates how to find a key K using a skip list S. The search is carried out using the algorithm using the functions next(p) and below(p).arrow_forwardPerform the Bubble Sort on the following list. You can use the sample algorithm presented during class. You do need to show each step during the sort. You may have to show several steps. e. List = [3, 4, 5, 11, 3, 5, 13, 8, 9, 7, 15] f. write your answers next to each part, a,b,c,d of the problem. Indicate true or false for the following statements: (a) Every element in a list must have the same type. (b) A list's size is fixed after it is created. (c) A list can have duplicate elements. (d) The elements in a list can be accessed via an index operator.arrow_forward
- This chapter's bubble sort method is less efficient than it could be. If a pass through the list is done without swapping any components, the list is sorted and there is no reason to continue. Change this algorithm to terminate as soon as it recognises that the list is sorted. A break statement should not be used.This chapter's bubble sort method is less efficient than it could be. If a pass through the list is done without swapping any components, the list is sorted and there is no reason to continue. Change this algorithm to terminate as soon as it recognises that the list is sorted. A break statement should not be used.This chapter's bubble sort method is less efficient than it could be. If a pass through the list is done without swapping any components, the list is sorted and there is no reason to continue. Change this algorithm to terminate as soon as it recognises that the list is sorted. A break statement should not be used.This chapter's bubble sort method is less efficient…arrow_forwardWrite a version of the binary search algorithm that can be used to search a list of strings. (Use the selection sort that you designed to sort the list.)arrow_forwardThe function interleave_lists in python takes two parameters, L1 and L2, both lists. Notice that the lists may have different lengths. The function accumulates a new list by appending alternating items from L1 and L2 until one list has been exhausted. The remaining items from the other list are then appended to the end of the new list, and the new list is returned. For example, if L1 = ["hop", "skip", "jump", "rest"] and L2 = ["up", "down"], then the function would return the list: ["hop", "up", "skip", "down", "jump", "rest"]. HINT: Python has a built-in function min() which is helpful here. Initialize accumulator variable newlist to be an empty list Set min_length = min(len(L1), len(L2)), the smaller of the two list lengths Use a for loop to iterate k over range(min_length) to do the first part of this function's work. On each iteration, append to newlist the item from index k in L1, and then append the item from index k in L2 (two appends on each iteration). AFTER the loop…arrow_forward
- TRUE or FALSE? Suppose you have been given a sorted list of 100 names and needed to find a particular name in that list. Using binary search, it is possible that you might have to look at every location in list before finding the desired namearrow_forward7. Given a non-dummy headed circular list, write down a method for inserting an element into the list.arrow_forwardA user is going to enter numbers one at a time, entering 'q' when finished. Put the numbers in a list, sort it in numerical order, and print out the list. Then print out the middle element of the list. (If the list has an even number of elements, print the one just after the middle.) Remember that a list 1st of numbers can be sorted numerically by calling 1st.sort(), and can be printed with print(1st). You can assume that every entry is either a valid integer or is the letter 'q'. Examples: If the input is 4 3 6 7 3 q The output is [3, 3, 4, 6, 7] 4 If input is 4 3 6 7 3 2 q The output is [2, 3, 3, 4, 6, 7] 4arrow_forward
- Program to Generate Random Numbers from 5 to 30 and Append Them to the Listarrow_forwardBackground Once upon a time, in a certain medieval village, a group of mysterious strangers appeared in jeans and T-shirts. The strangers managed to learn enough Old English to explain that they had been enjoying their favourite pastime-belting out tunes ata karaoke party-when they saw a blinding flash and heard a thundemus roar, Inst consciousness, and found themselves transported hack in time without any explanation. The villagers were most interested in the strangers' wide-ranging komledge af popular snags from the future. They understood that the strangers belnaged to some sort of hard class. The villagers were also party animals, and had a feast every night. The bands agreed to come to some of the parties and sing ane Dillboard Top 40 song whenever they did. When they weren't there, the villagers would sing these songs to each other, reverently, knowing that they held clues to the future of their world. The more they learned, the more they were able to share, and some were even…arrow_forwardUsing c++ Create this program in this given instructions. Using a random number generator, create a list of 500 integers. Perform a benchmark analysis using some of the sorting algorithms from this chapter. What is the difference in execution speed? Implement the bubble sort using simultaneous assignment. A bubble sort can be modified to “bubble” in both directions. The first pass moves “up” the list, and the second pass moves “down.” This alternating pattern continues until no more passes are necessary. Implement this variation and describe under what circumstances it might be appropriate.arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education