![](/img/trans.png)
[英]UnboundLocalError: local variable 'sum' referenced before assignment
[英]Recursive sum function (“ UnboundLocalError: local variable referenced before assignment”)
簡單的遞歸和 function。
它應該添加一個數字的所有數字。 例如 sum(123) = 1 + 2 + 3 = 7
它通過尾遞歸工作。 我取給定數字的第一個數字並將其添加到數字的 rest 的總和中。
def sum(num):
num_of_digits = len(str(num))
if num_of_digits != 1:
first_digit = int(num / pow(10, num_of_digits - 1))
rest = num - int(num / pow(10, num_of_digits - 1)) * pow(10, num_of_digits - 1)
return first_digit + sum(rest)
else:
return first_digit
print(sum(123))
錯誤
UnboundLocalError: local variable 'first_digit' referenced before assignment
我的問題是為什么代碼不起作用?
在引用它之前,您必須向變量添加一個值。 所以在if
語句之前定義first_digit
。
你可以這樣做:
def sum(num):
num_of_digits = len(str(num))
# defining first_digit before if...
first_digit = 0
if num_of_digits != 1:
# then referencing it will work
first_digit = int(num / pow(10, num_of_digits - 1))
rest = num - int(num / pow(10, num_of_digits - 1)) * pow(10, num_of_digits - 1)
return first_digit + sum(rest)
else:
return first_digit
print(sum(123))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.