Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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
如何在python中验证数字大于0?_Python_Flask - Fatal编程技术网

如何在python中验证数字大于0?

如何在python中验证数字大于0?,python,flask,Python,Flask,我试图用python验证输入表单返回的数字。输入值必须是一个大于0的数字 我的剧本是这样的: 你好.py # -*- coding: utf-8 -*- from flask import * app = Flask(__name__) @app.route('/', methods=['GET','POST']) def checNumber(): if request.method=='POST': number = request.form['Number'

我试图用python验证输入表单返回的数字。输入值必须是一个大于0的数字

我的剧本是这样的:

你好.py

# -*- coding: utf-8 -*-
from flask import *

app = Flask(__name__)


@app.route('/', methods=['GET','POST'])
def checNumber():
    if request.method=='POST':

        number = request.form['Number']


        try:
            if int(number) < 0:
                raise 'Number should be greater than 0'
        except:
                raise 'Please enter number only'

    return render_template('hello.html')

if __name__ == '__main__':

    app.run(debug=True)
#-*-编码:utf-8-*-
从烧瓶进口*
app=烧瓶(名称)
@app.route('/',方法=['GET','POST'])
def checNumber():
if request.method==“POST”:
数字=请求。表格['number']
尝试:
如果int(number)<0:
raise“数字应大于0”
除:
提出“请仅输入数字”
返回render_模板('hello.html')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
hello.html

<form class="form-horizontal" action='' method='POST'>
      <div class="form-group">
        <label for="KhmerName" class="col-sm-2 control-label">Number:</label>
        <div class="col-sm-10">
          <input type="text" class="form-control" id="Number" name="Number" placeholder="Please enter number only">
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
          <button type="submit" class="btn btn-default">Submit</button>
        </div>
      </div>
    </form>

编号:
提交
在我点击提交表单后,如果输入的值不是数字(字母表或其他东西),它将引发
“请只输入数字”
。但是,如果数字为负数,则它不会引发
“数字应该大于0”
,但python将其视为非数字,并引发
“请仅输入数字”

我认为负值也是一个数字

我怎样才能解决这个问题?谢谢。

而不是:

    try:
        if int(number) < 0:
            raise 'Number should be greater than 0'
    except:
            raise 'Please enter number only'
试试看:
如果int(number)<0:
raise“数字应大于0”
除:
提出“请仅输入数字”
配合:

   try:
       if float(request.form['Number']) <= 0:
          raise 'Number should be greater than 0'
   finally:
       raise 'Please enter number only'
试试看:
如果浮动(请求表['Number'])
您希望此行将引发异常和
checNumber
函数转储,但是
try捕获的异常。。。除了…

试试这个:

@app.route('/', methods=['GET', 'POST'])
def checNumber():
    if request.method == 'POST':

        number_str = request.form['Number']
        try:
            number = float(number_str)
        except ValueError:
            number = None

        if number is None:
            raise ValueError('Please enter number only')
        elif number <= 0:
            raise ValueError('Number should be greater than 0')
        else:
            pass

    return render_template('hello.html')
@app.route('/',方法=['GET','POST'])
def checNumber():
如果request.method==“POST”:
数字=请求。表格['number']
尝试:
数字=浮动(数字)
除值错误外:
数字=无
如果数字为“无”:
raise VALUE ERROR('请仅输入数字')

elif number您是否确认了
try
块之前的number值实际上是您输入的数字<代码>打印检查可能有用。顺便说一下,
<0
不检查
==0
,这不是“大于0”@roelofs,如果我只是打印不引发,它将正确验证。不,在尝试添加
打印请求之前,请执行
打印(repr(request.form['Number'))
,并发布
输入(数字、负数或字母表)的输出。
会有很大帮助。@cricket\u 007绝对是最好的。。。我将编辑答案。无论输入什么(数字、负数或字母),它只会引发“请仅输入数字”。谢谢。@HouyNarun如果你一起删除屏蔽try结构,你会得到什么异常?如果int(number)<0:raise'number应该大于0'
,如果输入是一个数字,它就可以了,如果输入是
负数
,它将引发
number应该大于0
。如果输入是字母表(非数字),则会引发异常
ValueError:invalid literal for int(),基数为10
。谢谢你回答我的问题!非常感谢,李:D
@app.route('/', methods=['GET', 'POST'])
def checNumber():
    if request.method == 'POST':

        number_str = request.form['Number']
        try:
            number = float(number_str)
        except ValueError:
            number = None

        if number is None:
            raise ValueError('Please enter number only')
        elif number <= 0:
            raise ValueError('Number should be greater than 0')
        else:
            pass

    return render_template('hello.html')