def get_user_input(): prompts = ["Enter a package ID: ", "Enter delivery address: ", "Enter delivery city: ", "Enter delivery zip code: ", "Enter delivery state: ", "Enter delivery deadline: ", "Enter package weight: "] input_parameters = ['27', '1060 Dalton Ave S', 'Salt Lake City', '84104', 'UT', 'EOD', '5'] # input_parameters = ['9', '300 State St', 'Salt Lake City', '84103', 'UT', 'EOD', '2'] input_parameters = [] print("Enter the following information for the package:") for prompt_index in range(len(prompts)): user_input = input(prompts[prompt_index]) input_parameters.append(user_input) input_address = Address(input_parameters[1], input_parameters[2], input_parameters[3], input_parameters[4]) input_package = Package(int(input_parameters[0]), input_address, float(input_parameters[6])) str_time = input_parameters[5] valid_selection = False while not valid_selection: if ':' in str_time: split_time = input_parameters[5].split(':') hour = split_time[0] minute = split_time[1] if not hour.isnumeric() or not minute.isnumeric(): str_time = input("Invalid time. Please, re-enter time (HH:MM): ") elif int(hour) <= 0 or int(hour) > 23 or int(minute) < 0 or int(minute) > 60: str_time = input("Invalid time. Please, re-enter time (HH:MM): ") else: deadline = time(int(hour), int(minute, 0)) valid_selection = True elif str_time == 'EOD': deadline = time(23, 0, 0) valid_selection = True input_package.deadline = deadline return input_package
def add_package_to_pkg_dict(pkg_id, street_address, city, zip_code, state, weight, deadline, later_pickup_time, delivery_truck, same_route_packages): # Get address_id from address_dict{} address_tuple = get_address_from_address_dict(street_address, city, zip_code, state) vertex_address = address_tuple[1] # Create a new Package object. new_package = Package(pkg_id, vertex_address, weight) # Set delivery deadline. # Add each unique deadline to the deadline_set. new_package.deadline = deadline.time deadline_set.add(deadline) # Set specific truck requirement if not (delivery_truck == ''): new_package.truck = trucks[delivery_truck - 1] # Add all packages that are required to be delivered together in the same route to # a set, which is then appended to the same_route_set_list[same_route_sets]. # This list of sets will be used to ensure packages are delivered together. if len(same_route_packages) > 0: temp_set = set() temp_set.add(int(new_package.pkg_id)) for package_id in same_route_packages: temp_set.add(package_id) same_route_set_list.append(temp_set) # If package has a specific pickup time requirement, add that package to Truck 1 if not (later_pickup_time == ''): new_package.truck = trucks[0] # Add package to pkg_dict{} if new_package.address not in pkg_dict.keys(): pkg_dict[new_package.address] = [new_package] else: pkg_list3 = pkg_dict.get(new_package.address) pkg_list3.append(new_package) return pkg_dict