Our users do not want to have to re-enter the price levels each time the app starts. Therefore, we need to save the price levels to a file on disk – called levelsFile - and populate the levelsList with the file’s items when the app starts. Also, every time the user manipulates the values in levelsList, levelsFile needs to be updated accordingly. The easiest way is not to update the file, but to simply override it (create a new file) with the new values in levelsList (each time the user manipulates items in the list). Two new methods need to be created in the PriceChecker class. They are readLevelsFromFile() and writeLevelsToFile(). And then the Main Code Section must also be updated to use these methods in the object. Note: The changes required to the Main Code Section are supplied on the next slide, but you need to complete the skeleton code of the two newly mentioned methods (supplied on subsequent slides). (code to work on)instructions in pictures

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

Our users do not want to have to re-enter the price levels each time the app starts. Therefore,  we need to save the price levels to a file on disk – called levelsFile - and populate the levelsList with the file’s items when the app starts.

Also, every time the user manipulates the values in levelsList, levelsFile needs to be updated accordingly. The easiest way is not to update the file, but to simply override it (create a new file) with the new values in levelsList (each time the user manipulates items in the list).

Two new methods need to be created in the PriceChecker class. They are readLevelsFromFile() and writeLevelsToFile(). And then the Main Code Section must also be updated to use these methods in the object.

Note: The changes required to the Main Code Section are supplied on the next slide, but you need to complete the skeleton code of the two newly mentioned methods (supplied on subsequent slides).

(code to work on)instructions in pictures

class PriceChecker():
    # Constructor
    def __init__(self):
        self.levelsList = []

    def levelsList(self):
        return self.__levelsList

    def levelsList(self, newValue):
        self.__levelsList = newValue

        # Class Methods

    # =============

    # Method: Sort and Display the levelsList
    def displayList(self):
        print(chr(27) + "[2J")  # Clear the screen
        print("Price Levels In The List")
        print("========================")
        # Sort the list in reverse order
        self.levelsList.sort(reverse=True)
        # Print the items in the list (Based on the above sort, numbers should appear from large to small.)
        for item in self.levelsList:
            print(f"${item:,}")

    # Display the menu and get user input about what methods to execute next
    def displayMenu(self):
        min = 0
        max = 3
        errorMsg = "Please enter a valid option between " + str(min) + " and " + str(max)

        print("\nMENU OPTIONS")
        print("============")
        print("1. Add a price level")
        print("2. Remove a price level")
        print("3. Remove all price levels")
        print("0. Exit the program")
        print(" ")

        # Get user input. Keep on requesting input until the user enters a valid number between min and max
        selection = 99
        while selection < min or selection > max:
            try:
                selection = int(input("Please enter one of the options: "))
            except:
                print(errorMsg)  # user did not enter a number
                continue  # skip the following if statement
            if (selection < min or selection > max):
                print(errorMsg)  # user entered a number outside the required range
        return selection  # When this return is finally reached, selection will have a value between (and including) min and max

    # Method: Append a new price level to the levelsList
    def addLevel(self):
        try:
            # Let the user enter a new float value and append it to the list
            new_level = float(input('\n Enter a new level: '))
            self.levelsList.append(new_level)
        except:
            # Print and error message if the user entered invalid input
            print("This is invalid value!!")

    # Method: Remove an existing price level from the levelsList
    def removeLevel(self):
        try:
            # Let the user enter a new float value. If found in the list, remove it from the list
            new_level = float(input('\n Enter a level: '))
            if new_level in self.levelsList:
                self.levelsList.remove(new_level)
            else:
                print('This level does not exist in levelList')
        except:
            # Print and error message if the user entered invalid input
            print("This is invalid input!!")

    # Method: Set levelsList to an empty list
    def removeAllLevels(self):
        # Set levelsList to an empty list
        self.levelsList = []


#                                           Main Code Section
# *************************************************************************************************

# Create an object based on the PriceChecker class
checkerObj = PriceChecker()

# Display the levelsList and Menu; and then get user input for what actions to take
userInput = 99
while userInput != 0:
    checkerObj.displayList()
    userInput = checkerObj.displayMenu()
    if (userInput == 1):
        checkerObj.addLevel()
    elif (userInput == 2):
        checkerObj.removeLevel()
    elif (userInput == 3):
        checkerObj.removeAllLevels()
try:
# Set levelsList to an empty list
# Open the file
# Use a loop to read through the file line by line
# If the last two characters in the line is "\n", remove them
# Append the line to levelsList
ww w
# Close the file
except:
return
Add the following method to your PriceChecker class and replace the ellipsis with the applicable code
(type it by hand if you get weird errors - especially the spaces
# Method: Write levelsList to levelsFile (override the existing file)
def writelevelsToFile(self):
# Open the file in a way that will override the existing file (if it already exists)
...
# Use a loop to iterate over levelsList item by item
# Convert everything in the item to a string and then add \n to it - before writing it to the file
# Close the file
Transcribed Image Text:try: # Set levelsList to an empty list # Open the file # Use a loop to read through the file line by line # If the last two characters in the line is "\n", remove them # Append the line to levelsList ww w # Close the file except: return Add the following method to your PriceChecker class and replace the ellipsis with the applicable code (type it by hand if you get weird errors - especially the spaces # Method: Write levelsList to levelsFile (override the existing file) def writelevelsToFile(self): # Open the file in a way that will override the existing file (if it already exists) ... # Use a loop to iterate over levelsList item by item # Convert everything in the item to a string and then add \n to it - before writing it to the file # Close the file
Add the underlined code to your Main Code Section (type it by hand if you get weird errors- especially
the
Main Code Section
# Create an object based on the PriceChecker class
checkerObj = PriceChecker()
# Load levelsList from the records in levelsFile
checkerObj.readLevelsFromFile()
# Display the levelsList and get user input for what actions to take
userlnput = 99
while userinput = 0:
checkerobj.displaylist()
userinput = checkerObj.displayMenu()
if(userInput == 1):
checkerObj.addLevel()
checkerObj.writelevelsToFile() # Write levelsList to LevelsFile
elif(userinput == 2):
%3D3D
checkerObj.removelevel()
checkerObj.writelevelsToFile() # Write levelsList to LevelsFile
elif(userinput == 3):
%3D
checkerObj.removeAllLevels()
checkerObj.writelevelsToFile() # Write levelsList to LevelsFile
Add the following method to your PriceChecker class and replace the ellipsis with the applicable code
(type it by hand if you get weird errors - especially the spaces
# Method: Load levelsList using the data in levelsFile
wwwww w
def readlevelsFromFile(self):
Transcribed Image Text:Add the underlined code to your Main Code Section (type it by hand if you get weird errors- especially the Main Code Section # Create an object based on the PriceChecker class checkerObj = PriceChecker() # Load levelsList from the records in levelsFile checkerObj.readLevelsFromFile() # Display the levelsList and get user input for what actions to take userlnput = 99 while userinput = 0: checkerobj.displaylist() userinput = checkerObj.displayMenu() if(userInput == 1): checkerObj.addLevel() checkerObj.writelevelsToFile() # Write levelsList to LevelsFile elif(userinput == 2): %3D3D checkerObj.removelevel() checkerObj.writelevelsToFile() # Write levelsList to LevelsFile elif(userinput == 3): %3D checkerObj.removeAllLevels() checkerObj.writelevelsToFile() # Write levelsList to LevelsFile Add the following method to your PriceChecker class and replace the ellipsis with the applicable code (type it by hand if you get weird errors - especially the spaces # Method: Load levelsList using the data in levelsFile wwwww w def readlevelsFromFile(self):
Expert Solution
steps

Step by step

Solved in 2 steps with 2 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY