8 if n != 0:
9 y = n%10 #figure out the least number like 12345 is 5
---> 10 result.append('y')
11 get_digits(n//10)#like 12345 becomes 1234
12
赋值之前引用的局部变量“结果”
我该如何解决?感谢您的帮助
如果我这样做,它将起作用:
result = []
def get_digits(n):
if n>0:
result.insert(0,n%10)
get_digits(n//10)
get_digits(12345)
print(rsult)
这是我的最后一个代码,有一个错误,但是我无法解决
## input 12345 ,output[1,2,3,4,5]
result = []#define a empty list
def get_digits(n):
if n == 0:
result = list(reversed(result))#reverse the list,if not output[5,4,3,2,1]
return result
if n != 0:
y = n%10#figure out the least number like 12345 is 5
result.append('y')
get_digits(n//10)#like 12345 becomes 1234
print(get_digits(12345))
[1,2,3,4,5]
答案 0 :(得分:1)
告诉python public void ConfigureServices(IServiceCollection services)
{
services.AddHangfire(configuration => {
configuration.UseStorage(
new MySqlStorage(
"server=127.0.0.1;uid=root;pwd=root;database={0};Allow User Variables=True",
new MySqlStorageOptions
{
TablesPrefix = "Hangfire"
}
)
);
};
}
是一个result
变量:
global
答案 1 :(得分:0)
问题是result
是在函数的全局范围内定义的,因此您的函数无法分配给变量。您可以通过添加global result
语句来明确允许此操作:
result = []
def get_digits(n):
global result
# ...
print(get_digits(12345))
仍然无法正常工作,因为get_digits(n//10)
不返回任何内容。您将需要类似的东西
get_digits(12345)
print(result)
但是,我建议不要在函数中定义result
并返回它,并建议您在函数中递归调用get_digits
时返回。
def get_digits(n):
def helper(result, n):
if n == 0:
result = list(reversed(result))
return result
else:
result.append(n % 10)
return helper(result, n // 10)
return helper([], n)
然后,print(get_digits(12345))
可以正常工作。
答案 2 :(得分:0)
在函数中本地创建一个空变量可以解决此错误。
例如:
def string_splosion(str):
for i in range(len(str)):
result = result + str[:i+1]
return result
这引起了我错误:“分配前已引用本地变量'结果'”
这清楚地表明未定义变量“ 结果”来存储迭代值。因此,我需要在类似于以下代码的函数中声明一个字符串变量。
def string_splosion(str):
result = "" #This line proned to error.
for i in range(len(str)):
result = result + str[:i+1]
return result