擅长:python、mysql、java
<p>您正在迭代过程中从列表中删除项。这几乎总是给你奇怪的结果。根据您的注释,您只希望<code>shipments_list</code>在结尾处为空,因此请在结尾处而不是在循环的中间执行此操作:</p>
<pre><code>for order in shipments_list:
if order[1] <= 20 and order[2] <= 15 and bamboo_shoots >= 0 and bamboo_leaves >= 0:
bamboo_shoots -= order[1]
bamboo_leaves -= order[2]
total_cost = ((5*order[1])+(2*order[2]))
print (order[0], "-", "$",total_cost)
else:
next_day_orders += order
del shipments_list[:] # < empty the list here
return next_day_orders
</code></pre>
<hr/>
<p>为什么不从循环中的列表中删除项?考虑这个例子:</p>
<pre><code>>>> x = [0, 1, 2, 3, 4, 5]
>>> for y in x:
... print y
... x.remove(y)
...
0
2
4
>>>
</code></pre>
<p>只迭代偶数个元素。第一个元素是<code>0</code>。但是在这个循环中,<code>0</code>被删除了,所以现在第一个元素是<code>1</code>。下一个循环跳到第二个元素,现在是<code>2</code>。<code>1</code>从未处理过!<code>3</code>和<code>5</code>也是如此。你知道吗</p>