对于任意数量的项目,返回最小X(可以包含Y个项目)

2024-05-29 06:14:11 发布

您现在位置:Python中文网/ 问答频道 /正文

感觉自己脑死亡了。当然,我可以强制这个,但是我觉得有一个简单的函数可以返回这个数。关于本机函数,我使用的是PHP和/或Python。你知道吗

例如:存在一个容器,每个容器容纳X(5)个面包条,并且 我要喂Y(25)个人Z(3)块面包。你知道吗

我需要归还我必须获得的容器的数量来养活这些人。(可能有也可能没有剩余的面包屑)。你知道吗

编辑:阐明了一些意图。你知道吗


Tags: 函数编辑数量容器意图php面包屑感觉
3条回答
def f(X, Y, Z):
  d, r = divmod(Y * Z, X)
  return d + bool(r)

在Python中,使用//(integer floor division,在python2.2中引入)并强制它向上取整:

number_required = y * z
container_holds = x
reqd_containers = (number_required + container_holds - 1) // container_holds

或者如果您需要所谓的“专业程序员”版本而不是解释性版本:

n=(y*z+(x-1))//x;

或者如果你真的害怕腕管综合症,切掉两个多余的括号和分号:

n=(y*z+x-1)//x

注意:这个解决方案同时适用于python2(其中10 / 3 -> 3)和python3(其中10 / 3 -> 3.3333333333333335

其他的“解决方案”不仅使用不必要的函数调用,而且也会因大量数据而失败:

# wrong in Python 3; works with Python 2.3 to 2.7
# int overflow with Pythons up to 2.2
>>> int((100000000000000000 + 2)/3)
33333333333333332 # last digit should be 4

# wrong with Python 2.3 onwards; int overflow with earlier versions
>>> import math
>>> int(math.ceil(float(100000000000000000) / 3))
33333333333333332L

听起来你想要算术:

min_containers = y*z/x

如果您有可能得到剩余的情况:

min_full_containers = floor(y*z/x)
remaining_items = y*z%x

相关问题 更多 >

    热门问题