擅长:python、mysql、java
<p>我相信您的代码的目的是将*args中的元素汇总到第6个数字的第一次出现。如果是这样的话,while循环在这里是多余的。更改第一个代码段:</p>
<pre><code>def add1(*args):
total = 0
for num in args:
if num != 6:
total = total + num
else:
break
return total
add1(1, 2, 3, 6, 1)
</code></pre>
<hr/>
<p>在原始代码中实际发生的情况是,在while循环中迭代时,<em>num</em>变量不会以任何方式更改,因此它永远不会进入else部分,实际上会被卡在不是6的第一个输入参数上,请参见以下内容:</p>
<pre><code>def add1(*args): # [1, 2, 3, 6, 1]
total = 0
add = True
for num in args: # first element is 1. num = 1
while add == True:
if num != 6: # num = 1 always
total = total + num
# adding break here gets out of the while loop on first iteration, changing num = 2
# and later to 3, 6...
else: # else is never reached
add = False
return total
add1(1, 2, 3, 6, 1)
</code></pre>