赋值前引用的局部变量'final_result'我正在制作一个 django 计算器网络应用程序,但我被这个错误卡住了



目前,我正在构建一个django驱动的UI Caculator应用程序,但我遇到了这个错误。。我无法调试它。无论我想尝试什么都无济于事。我的意思是,我不知道为什么它告诉我在它被分配之前引用的最终结果,而我已经分配了final_result,然后我有引用final_result

视图.py

def index(request):
if request.method=="POST":
values=request.POST['values'] 
print(values)
vals=re.findall(r"(d+)",values) 
operators=['+','x','÷','-','%']
opr=[]
for v in values:
for o in operators:
if v==o:
opr.append(o)
print(opr)                      
print(re.findall(r"(d+)",values))
for o in opr:
if o=='÷':
i=opr.index(o)
res=float(vals[i])/float(vals[i+1])
vals.remove(vals[i+1])
opr.remove(opr[i])
vals[i]=str(res)
print(vals)
print(opr)
elif o=='x':
i=opr.index(o)
res=float(vals[i])*float(vals[i+1])
vals.remove(vals[i+1])
opr.remove(opr[i])
vals[i]=str(res)
print(vals)
print(opr)
elif o=='+':
i=opr.index(o)
res=float(vals[i])+float(vals[i+1])
vals.remove(vals[i+1])
opr.remove(opr[i])
vals[i]=str(res)
print(vals)
print(opr)
else:
i=opr.index(o)
res=float(vals[i])-float(vals[i+1])
vals.remove(vals[i+1])
opr.remove(opr[i])
vals[i]=str(res)
print(vals)
print(opr)
if(len(opr)!=0):
if opr[0]=='÷':
result = float(vals[0])/float(vals[1])
elif opr[0]=='x':
result = float(vals[0])*float(vals[1])
elif opr[0]=='+':
result = float(vals[0])+float(vals[1])
else :
result = float(vals[0])-float(vals[1])
final_result=result
print(final_result)
res=render(request,'index.html'{'result':final_result,'values':values})
return res

如果request.method不是"POST",则在使用对render的调用之前不会将final_result分配给。

您应该在之前初始化final_result

final_result = 0
if request.method == "POST":

正如@SLDem所说。

或者在函数中声明def index(request, final_result=0)这也会起作用。

相关内容

最新更新