【发布时间】:2021-05-13 13:13:16
【问题描述】:
我是编程和 Django 的初学者。我正在做一个计算器。但我收到一个错误(UnboundLocalError:local variable 'final_result' referenced before assignment)。代码是
from django.http import HttpResponse
from django.shortcuts import render
import re
def clculator(request):
pass
def calculation(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=vals[i]+"."+vals[i+1]
vals.remove(vals[i+1])
opr.remove(opr[i])
vals[i]=res
print(vals)
print(opr)
for o in opr:
if o == '%':
i = opr.index(o)
res =(float(vals[i])/100)*float(vals[i+1])
vals.remove(vals[i+1])
opr.remove(opr[i])
vals[i]= res
print(vals)
print(opr)
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)
for o in opr:
if 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)
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)
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)
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])
else:
result = float(vals[0])
final_result = round(result,2)
print(final_result)
return render(request, 'calc/index.html', {'result':final_result, 'values':values})
我不知道问题出在哪里。请帮我解决这个问题
【问题讨论】:
-
您的变量已在 POST 上设置。你似乎做了一个 GET 。
-
再仔细看看错误信息。它告诉您错误在哪一行,甚至列出该行。这就是为什么指南坚持在您的问题中包含完整的堆栈跟踪。
标签: python python-3.x django django-models django-views