Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Write a Python program to solve the following problem. The data is stored in a file called inventory.txt . Each line in this file begins

Write a Python program to solve the following problem. The data is stored in a file called inventory.txt. Each line in this file begins with the day of the week (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, or Saturday), followed by a comma (,), followed by the item name (apples, bananas, meat, or fish), followed by another comma (,), followed by the amount of kilograms displayed for that item on that day (a positive floating-point number), followed by another comma (,), followed by the quantity of kilograms purchased by customers for that item on that day (a positive floating-point number).
Any line that deviates from this format is considered an error, including lines with extra spaces between the comma-separated values. Additionally, each unique day-item pair should appear only once in the file; repeated day-item pairs are also errors. Missing day-item pairs are not considered errors, as some days the store may be closed or certain items may not be available. It's also important to check that the purchased kilograms for an item on a specific day are less than the displayed kilograms for that item on that day; if this rule is unmet, this should be considered yet another error in the data file.
Task
Your task is to read the data from inventory.txt. If there are no errors when reading the data, the program should prompt the user to provide the desired maximum ratio of unsold items on display (call it max_ratio). This value should be a floating-point number between 0 and 1. For each day-item pair, your program should calculate the ratio of unsold items on display. If this computed ratio is higher than the value in max_ratio, your program should retain the available and computed information for this day-item pair.
To extract the data from inventory.txt, your program should have a function named read_inventory_data, which takes a single parameter the name of the file containing the data. This function should return a list of dictionaries. Each dictionary should contain the keys day_of_week, item_name, unsold_kg (calculated by subtracting the purchased kilograms from the displayed kilograms), and ratio_unsold (calculated by dividing unsold_kg by the displayed kilograms), but only if the data read from inventory.txt is valid. If there are any errors while reading data from the file, this function should raise an exception. Your main program should call this function and handle any exceptions, ensuring that the application does not crash but rather prints error messages and exits gracefully (see examples of interactions below).
To determine which day-item pair would benefit most from reviewing displayed quantities, you should sort the day-item pairs with ratio_unsold values above the max_ratio threshold value. Your program should have a function sort_inventory_data that sorts the identified day-item pairs based on the their corresponding value of ratio_unsold from highest to lowest ratio_unsold value. Day-item pairs having same ratio_unsold values should be sorted first by the day of the week (Sunday being the first day and Saturday the last) and then by item in ascending alphabetical order (i.e. apples, bananas, fish, and then finally meat).
Note: Your solution must include the two functions specified above, and can include any other functions, if you need so. There is no requirement to use any particular sorting algorithm for this assignment. Any algorithm that gives the correct result (without excessively slowing down or halting the computation) can be used.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Learning PostgreSQL

Authors: Salahaldin Juba, Achim Vannahme, Andrey Volkov

1st Edition

178398919X, 9781783989195

More Books

Students also viewed these Databases questions