Python:你如何找到最简单的可分割形式

时间:2016-03-30 13:38:58

标签: python

我正在开发一个程序,用户输入旅行的人数,程序确定要使用的每种车辆类型所需的数量。说: 车 - 4名乘客 小型货车 - 7名乘客 小巴士 - 15名乘客 大巴士 - 60名乘客

这是我到目前为止所做的:

car_capacity = int(4)
minivan_capacity = int(7)
short_bus_capacity = int(15)
full_size_bus_capacity = int(60)

cars_needed = 0
minivan_needed = 0
short_buses_needed = 0
full_size_buses_needed = 0

passengers = int(input("How many people will be going?\n"))
if passengers < 1:
    print("Nobody is going, therefore no vehicles will be needed.")

while passengers > 0:
    print(passengers % 60)

基本上我试图找出所需的车辆最少。 Ex(输入= 63.输出1大总线,1小)

请不要以为我在寻求答案,我只是需要一些线索或暗示要研究什么或如何处理这个问题

1 个答案:

答案 0 :(得分:1)

passengers = int(input("How many people will be going?\n"))
if passengers < 1:
    print("Nobody is going, therefore no vehicles will be needed.")

# make it a dictionary, so we can loop through
vehicles = {
    4: 'car',
    7: 'minivan',
    15: 'short_bus',
    60: 'full_size_bus'
} 
vehicles_needed = {}

# a helper to check one type of vehicle
def check_vehicle(passengers, capacity, name):
    if passengers >= capacity:
        amount = passengers / capacity
        # substract the passengers 
        passengers -= (amount * capacity)
        return {name: amount}, passengers
    return {}, passengers

# loop through all capacities from the biggest one
for k, v in sorted(vehicles.items(), reverse=True):
    # if any vehicle needed, it will be put in the vehicles_needed
    vehicle_update, passengers = check_vehicle(passengers, k, v)
    vehicles_needed.update(vehicle_update)
# if there is a leftover, add one car
if passengers > 0:
    vehicles_needed.update({'car':  vehicles_needed.get('car', 0) + 1})

print vehicles_needed # 67 -> {'minivan': 1, 'full_size_bus': 1}