列表和while循环

2024-10-01 00:20:16 发布

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

我对Python还比较陌生,我被一个特别的问题困住了,我想我应该问问你们。你知道吗

以下是我迄今为止的代码,以及其中存在的问题:

list=[100,20,30,40 etc...]

只是一个用不同数值表示物体重量的列表。你知道吗

object=0

while len(list)>0:
   list_caluclation=list.pop(0)
   print(object number:",(object),"evaluates to")

我接下来要做的是评估列表中的项目。所以如果我们使用索引[0],我们的列表值是100。然后我想把它分成更小的部分,比如,对于一个100克的物体,我们可以把它分成5个20克的单位。如果被拆分的值是35,那么它将是一个20克单位,10克单位和一个5克单位。你知道吗

我想分成五个单位:20,10,5,1和0.5。你知道吗

如果有人对我的问题有一个快速的提示,将不胜感激。你知道吗

敬礼


Tags: 代码列表lenobjectetc单位poplist
2条回答

你应该先考虑解决这个问题。所以基本上你要做的就是把一个数字分成一个已知组件的分区。这也被称为Change-making problem。您可以为此选择贪心算法,只要可能,该算法始终采用最大的组件大小:

units = [20, 10, 5, 1, 0.5]
def change (number):
    counts = {}
    for unit in units:
        count, number = divmod(number, unit)
        counts[unit] = count
    return counts

因此,这将返回一个字典,从每个单元映射到该单元的计数,以获得目标数字。你知道吗

您只需要为原始列表中的每个项调用该函数。你知道吗

一种方法是用双for循环。外循环是您输入的数字,内循环是您要计算的(即[20,10,5,1,0.5])。对于内循环的每次迭代,找出进入的次数(使用floor方法),然后使用模运算符将重新指定为余数。在每个循环中,你可以让它打印出你想要的信息:)我不知道你到底想要什么样的输出,但我希望这有帮助!你知道吗

例如:

import math
myList=[100,20,30,40,35]
values=[20,10,5,1,0.5]
for i in myList:
    print(str(i)+" evaluates to: ")
    for num in values:
        evaluation=math.floor(i/num)
        print("\t"+str(num)+"'s: "+str(evaluation))
        i%=num

相关问题 更多 >