Python - While-Loop until list is empty

I'm working with Django and I have a queryset of objects that has been converted to a list (unpaid_sales). I'm executing a process that iterates through this list and operates on each item until either the list is empty, or a given integer (bucket) reaches zero.

This is how I set it up:

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

In some cases, I am getting the following error:

pop from empty list

What's wrong with my logic?

3

3 Answers

Your end criteria must be formulated a little differently: run the loop while there are items and the bucket is positive. or is not the right operation here.

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

Do not use separate whileloops. Do as follows :

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

You should do a single loop: while bucket>0 and unpaid_sales. Here, you are popping elements in the bucket loop, and then just just check that bucket is positive, but you do not check that element_sales still has elements in it.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like