2014-02-09 4 views
0

Если 33 человека с 33 автомобилями выходят на автостоянку, сколько автомобилей понадобится, если в каждом автомобиле могут разместиться 4 человека? Сколько автомобилей останется на стоянке?Как написать сценарий для округления в python

Я знаю, что ответ - 9, но как написать сценарий для этого. Я много часов борется с этим.

cars = 33 
people = 33 
people_per_car = 4 
cars_needed = people/people_per_car 
cars_left_at_lot = cars - cars_needed 
print cars_needed 
print cars_left_at_lot 

Я получаю 8 - Неправильно!

8 
25 
+0

https://www.google.no/search?q=python+round+up&oq=python+round+up&aqs=chrome..69i57j0l3j69i60j69i64.3138j0j4&sourceid=chrome&ie=UTF-8 – M4rtini

ответ

1

Это происходит потому, что в python2, когда оба операнда являются целыми числами выполнения деления на целое число, что по умолчанию округляется:

>>> 33/4 
8 
>>> 33/4.0 # Note that one of operands is float 
8.25 
>>> math.ceil(33/4.0) 
9.0 

В Python3 делении выполняется в поплавковом способе по умолчанию (но я думаю, это не имеет значения).

1

Вам нужно добавить дополнительный автомобиль, если есть остаток:

cars_needed = people/people_per_car 
if people % people_per_car: 
    cars_needed += 1 
0

Хорошо, вам нужно использовать либо питон 3.3 или команда с плавающей точкой для того, чтобы отключить автоматическое округление:

from math import ceil 
cars = 33 
people = 33 
people_per_car = 4 
cars_needed = int(ceil(1.* people/people_per_car)) 
cars_left_at_lot = cars - cars_needed 
print cars_needed 
print cars_left_at_lot 

В python 2.7 номера округляются автоматически, если их тип - int. Вот почему я использовал 1. *, который преобразует число в float. Потолок будет округлять, а не округлять.

Смежные вопросы