目前,我正在构建一个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)
这也会起作用。