我在循环时很挣扎。
我有一个带有宽度的列表(双精度或整数,无所谓-不需要精度)。
基本上我需要总和低于限制的项目数。
现在,它仅找到第一个数字。
我无法适应while循环,因此它将重新开始计算其余项目。
该代码给出6作为输出,导致sum(100,300,30,100,50,80) 第一次迭代:从0开始直到总和达到限制:[100,300,30,100,50,80,400,120,500,75,180]->给出6 第二次迭代:从下一个(第一个运行+1的最后一个索引)开始,然后迭代其余的迭代:400,120,500,75,180->给出2 3rd:迭代500,75,180->给出3 宽度数=未知 如果width> limit->破坏代码 我想要这样的输出:
[6,2,3] Widths = [100,300,30,100,50,80,400,120,500,75,180]
def items(nums,limit):
sum=0
for i in range(0,len(nums)):
sum += nums[i]
if sum>limit-1:
return i
print (items(Widths,850))
答案 0 :(得分:0)
返回立即退出该函数。您需要存储而不是返回,然后从那里去。 我还指出了一些在代码中的注释也应该有所帮助。
Widths = [100,300,30,100,50,80,400,120,500,75,180]
def items(nums,limit):
acc = 0 #do not use sum as a variable name. it "shadows" or hides the builtin function with same name
length = 0
result = []
for num in nums: #You do not really need indexes here, so you can directly iterate on items in nums list.
acc += num
if acc >= limit: #greater than or equal to.
result.append(length)
acc = num
length = 1
else:
length += 1
result.append(length) #if you need the last length even if it does not add up.
return result
print (items(Widths,850))
#Output:
[6, 2, 3]