2016-10-08 84 views
0

我正在使用Django,并且我有一个已转换为列表的对象的查询集(unpaid_sales)。我正在执行一个遍历此列表的过程,并对每个项目进行操作,直到列表为空,或给定整数(bucket)为零。Python-While循环直到列表为空

这是我如何设置它:

while unpaid_sales: 
    while bucket > 0: 
     unpaid_sale = unpaid_sales.pop(0) 
     ...do stuff 

在某些情况下,我收到以下错误:

pop from empty list

这有什么错我的逻辑是什么?

+2

使用'or'的同时使用一个。 – YiFei

+0

“桶”何时更改? – jcolemang

+0

我现在明白了,谢谢! –

回答

3

您的最终标准必须制定一点不同:循环,而有项目和bucket是积极的。 or这里不是正确的操作。

while unpaid_sales and bucket > 0 
    unpaid_sale = unpaid_sales.pop(0) 
    #do stuff 
+0

他们每个人都有自己的条件。 'elif'与'while'循环一起工作吗? –

+0

不是真的。但在这种情况下,你应该在while循环之后使用正常的if语句 – tynn

+0

明白了。非常感谢! –

3

请勿使用单独的while循环。具体操作如下:

while unpaid_sales and bucket > 0 : 
    unpaid_sale = unpaid_sales.pop(0) 
    ...do stuff 
2

你应该做一个循环:while bucket>0 and unpaid_sales。在这里,您在bucket循环中弹出元素,然后只检查bucket是否为正数,但您不检查element_sales中是否仍有元素。