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?
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
                        Do not use separate whileloops. Do as follows :
while unpaid_sales and bucket > 0 :
    unpaid_sale = unpaid_sales.pop(0)
    ...do stuff
                        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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With