Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask程序中Python代码计算错误_Python_Html_Flask - Fatal编程技术网

Flask程序中Python代码计算错误

Flask程序中Python代码计算错误,python,html,flask,Python,Html,Flask,我正在使用HTML输入(文本和按钮)为我的Flask程序中的以下页面生成值: @app.route('/sale/add', methods=['GET','POST']) def add_sale(): if request.method == 'POST': comp = 150 pen = 0 bonus = 0 base = 0 if request.form['stm'] == 1:

我正在使用HTML输入(文本和按钮)为我的Flask程序中的以下页面生成值:

@app.route('/sale/add', methods=['GET','POST'])
def add_sale():
    if request.method == 'POST':
        comp = 150
        pen = 0
        bonus = 0
        base = 0
        if request.form['stm'] == 1:
            if request.form['call'] == 'yes':
                comp += 150
                if request.form['ryg'] == 0:
                    pen += 150
            elif request.form['call'] == 'no':
                comp += 100
                if request.form['ryg'] == 0:
                    pen += 150
        else:
            comp = 150
            pen = 0
        if request.form['fee'] == 0:
            pen += 50
        if request.form['level'] >= 1:
            base += 400
我请求Python代码方面的帮助,因为无论通过HTML表单输入什么值,变量
comp
总是显示为
150
,而
base
总是显示为
400
。HTML表没有问题,因为值正确地输入到数据库中。我遇到的问题只是Python变量

比如说,

请求。表单['call']
作为
'yes'
请求输入数据库。表单['stm']
作为
1
输入,但变量
comp
仍然计算为
150
(而不是
300

请求。表单['level']
输入为
0
,但变量
base
仍然计算为
400
(而不是
0

我不在这里包含HTML或SQL代码,因为我认为这不会影响结果,但如果有帮助,我可以编辑并添加它


示例数据库条目:
(ID、姓名、日期、日期2、通话、stm、ryg、费用、奖金、基数、薪酬、罚金、BonuPay、basePay)
(7、u'fj',u'2015-05-27',无,u'yes',1、1、0、0、150.0、0.0、0.0、400.0)
问题是,
\u getitem\uuuu>以字符串形式返回值,但您将其与数字进行比较。在Python3中,这会有助于抛出一个
TypeError
,但Python2允许您摆脱这个问题。解决办法是:

  • 将该值与字符串进行比较:`request.form['stm']=“1”
  • 将值转换为数字:
    request.form.get('stm',type=int)==1

显然,这意味着它没有击中
请求的块。form['stm']==1
条件,因此我认为这不是
==1
。我猜呢?这是一个字符串,不是数字。(7,u'fj',u'jf',u'2015-05-27',无,u'cold',1,1,1,0,0,150.0,0.0,0.0,400.0)是的,谢谢。我很困惑,因为正如您从编辑中看到的,它们在数据库中存储为int而不是字符串。但这就解决了这个问题。数据库在可能的情况下强制类型