Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python智能数字舍入_Python_List_Numbers_Rounding - Fatal编程技术网

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