回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我得到一个错误,说p2的arr未定义。如果我将p2=len(arr)-1表达式移到函数内部,错误就会消失。为什么会出现此错误?如何使此默认参数表达式工作</p>
<pre><code> def sumZero_refactor(arr, p1 = 0, p2 = len(arr) -1):
NameError: name 'arr' is not defined
</code></pre>
<pre><code>def sumZero_refactor(arr, p1 = 0, p2 = len(arr) -1):
while p1 < p2:
if arr[p1] + arr[p2] == 0:
return [arr[p1], arr[p2]]
elif arr[p1] + arr[p2] < 0:
p1 += 1
else:
p2 -= 1
print(sumZero_refactor([-3, -2, -1, 0, 1, 2, 3]))
print(sumZero_refactor([-2, 0, 1, 3]))
print(sumZero_refactor([1, 2, 3]))
print(sumZero_refactor([-8, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6]))
</code></pre>