首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数在python 3中具有多个输出。

函数在python 3中具有多个输出。
EN

Stack Overflow用户
提问于 2021-05-22 10:37:43
回答 1查看 223关注 0票数 0

我有个问题我还没弄清楚。在这个问题上,我想按顺序组装巧克力。要做到这一点,我有一个名为巧克力()的函数和七个输入,它们是

  1. 最终重量(27)小巧克力的
  2. 数(4)小巧克力的
  3. 重量(2)中巧克力的
  4. 数(4)

H 19中巧克力的重量(5)<代码>H 210<编码>H 111大巧克力的数量(3)<代码>H 212/代码><代码>H 113大巧克力的重量(8)<代码>H 214G 215

问题是,我要使用的巧克力和大巧克力一样多,然后是小巧克力,最后是小巧克力(最后的小巧克力的数量,最后的中巧克力的数量,最后的大巧克力的数量)。实际上,这看起来很简单,但我不确定如何使用多个输入的函数,然后返回到多个输出。如果你能帮助我如何开始,我会非常高兴,并继续写一个适当的代码,我希望。

这里有一些例子

代码语言:javascript
复制
input: 27 4 2 4 5 3 8 
output: 3 1 2 
EN

回答 1

Stack Overflow用户

发布于 2021-05-22 15:08:01

我想象你的目标是包装巧克力,从大巧克力开始,如果可能的话,试着达到目标重量。

以下返回包装的巧克力大小和包装重量,因为它可能不总是能够完全匹配目标重量。

正如您可能知道的,这是一个被称为“垃圾桶包装”的已知问题,它的解决方案比下面的“第一次拟合递减”方法要好(假设只有一个垃圾桶)。

代码语言:javascript
复制
def chocolates(final_weight, num_small_choc, w_small_choc, num_medium_choc, w_medium_choc, num_big_choc, w_big_choc):
    packed_weight = 0

    # Try to pack chocolates if they are not too big
    def pack_choc(packed_weight, num_choc, w_choc):
        while num_choc > 0:
            if packed_weight + w_choc <= final_weight:
                packed_weight += w_choc
                num_choc -= 1
            else:
                break
        return packed_weight, num_choc

    packed_weight, remaining_big_choc = pack_choc(packed_weight, num_big_choc, w_big_choc)
    packed_weight, remaining_medium_choc = pack_choc(packed_weight, num_medium_choc, w_medium_choc)
    packed_weight, remaining_small_choc = pack_choc(packed_weight, num_small_choc, w_small_choc)

    return num_small_choc - remaining_small_choc, num_medium_choc - remaining_medium_choc, num_big_choc - remaining_big_choc, packed_weight
    
>>> chocolates(27, 4, 2, 4, 5, 3, 8)
... (1, 0, 3, 26)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67648535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档