示例#1
0
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
示例#2
0
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