2016-03-30 9 views
-2

私は、ユーザーが旅行に行く人の数を入力し、プログラムが使用する各車両タイプの必要な数を決定するプログラムに取り組んでいます。そう言っ: カー - 4人の乗客 ミニバン - 7人の乗客 小型バス - 15人の乗客 ビッグバス - 60人の乗客Python:最も簡単な分割方法を教えてください

は、これは私がこれまで持っているものです。

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) 

基本的に私がしようとしています必要な最少の車両を見つける。例(入力= 63出力1つのビッグバス、1小)

私は答えを求めているとは思わないしてください、私がどれだけこの

+0

乗客の60人を乗せてみて、残りの乗客を小さなバスなどで試乗してみてください。 – Whitefret

+3

[divmod](https://docs.python.org/2/)をチェックしてください。 library/functions.html#divmod)。ヒント: 'divmod(63,60)'を試してみたら返されるもの。 'divmod(76,60)'と 'divmod(16、7)'はどうでしょうか? –

+0

あなたの例で必要とされる車の数(Input = 63)は1ビッグバスと1車にする必要はありませんか? – Leistungsabfall

答えて

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} 
+0

このソリューションを使用すると、2台の別個の車両ではなく、60人以上の乗客に対してのみ10進数の回答が得られます。私はバージョン3を使用しています。それが何か変更された場合 – rez

+0

あなたは何を意味するのか理解していません – yedpodtrzitko

+0

あなたは私のオリジナルから何を置き換えて何を保管しましたか?あなたの答えはまったく新しいコードですか? – rez