Python智能数字舍入
我有一些奇怪的数字,比如Python智能数字舍入,python,list,numbers,rounding,Python,List,Numbers,Rounding,我有一些奇怪的数字,比如19或23。这两个数字需要分成5个列表,这样5个列表的总和将是19。换句话说,每个列表中的3.8表示为19/5=3.8。然而问题是我不能有小数,我想要四舍五入的数字。有没有办法将数字进行相应的四舍五入,将4、4、3、4、4放入列表中,而不是将3.8分为五次 更重要的是,有些并没有被分成5个不同的数字。有些可能类似于77/12,因此被分成12个不同的列表,每个列表中有数字6或7,最后加起来就是77 你知道我怎么解决这个问题吗 谢谢 给你 def roundto(number
19或23。
这两个数字需要分成5个列表
,这样5个列表的总和将是19。换句话说,每个列表中的3.8表示为19/5=3.8。然而问题是我不能有小数,我想要四舍五入的数字。有没有办法将数字进行相应的四舍五入,将4、4、3、4、4放入列表中,而不是将3.8分为五次
更重要的是,有些并没有被分成5个不同的数字。有些可能类似于77/12,因此被分成12个不同的列表,每个列表中有数字6或7,最后加起来就是77
你知道我怎么解决这个问题吗
谢谢 给你
def roundto(number,items):
start = [1 for i in xrange(items)]
reached = False
while not reached:
for i in xrange(len(start)):
start[i] += 1
if sum(start) == number:
return start
print roundto(19,5)
>>>
[4, 4, 4, 4, 3]
原文:
def split(number, length):
result = [number//length]*length
for i in range(number%length):
result[i] += 1
return result
你的问题很不精确<代码>19或23。不是“一组数字”。你是说一个包含19个不同整数的集合吗?你能发布一些代码来演示你的输入,并展示你的尝试吗。然后解释你想要什么。@MarkByers该OP之前曾在聊天中发布过。所以我理解他的要求。回答。@InbarRose:但问题应该仍然清楚,以便a)其他人可以回答b)我们可以对答案进行投票,并且c)将来阅读此文章的其他有相同问题的人可以得到最佳答案。是的,对此表示抱歉。在聊天中查看回复之前写下问题。现在将使用更新的细节进行编辑非常优雅,我以前从未见过
[number//length]
,您能给我解释一下吗?@InbarRose-/
是地板分割的未来证明符号。在Python2.x上,这相当于number/length
,但在Python3.x上number/length
将导致浮动。我真的应该开始拥抱未来,永远被困在2.6中:)替代方案是不等价的,它非常重要better@InbarRose-那里发生的另一件事是[n]*m
,这将创建一个长度为m
的列表,每个索引处都有n
。结果与[n表示范围(m)内的i)]
相同。
def split(number, length):
result = [number//length]*length
for i in range(number%length):
result[i] += 1
return result