如何在python中验证数字大于0?
我试图用python验证输入表单返回的数字。输入值必须是一个大于0的数字 我的剧本是这样的: 你好.py如何在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'
# -*- 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')