书籍《Python编程快速上手(第2版)》阅读心得4、输入验证
[复制链接]
本篇学习Python的输入验证。
“输入验证”代码检查用户输入值的格式是否正确。比如说期望用户输入电话号码,但是用户实际上有可能输入非数字的字母,这个时候就需要对用户的输入信息进行验证,以确保用户输入的内容格式是正确的。
当然,程序员可以通过编写Python程序代码来实现对用户输入信息的检查,但是如果在比较复杂的情况下还是有可能漏掉一些情况的。
为了解决这个问题,Python提供了一个现成的第三方模块PyInputPlus用来验证用户输入。
PyInputPlus并不是标准的Python模块,所有如果要使用该模块需要手动安装。
PyInputPlus具有以下几种用于不同类型输入的函数:
如果输入了不符合要求的内容,这些函数会自动给出提示信息。
来看个例子:
第一次输入了five,因为不是数字,所有模块显示了“five is not a number”提示信息。
第二次输入了数字32,符合要求,所有没有提示信息。
另外,PyInputPlus模块还能带参数,用来显示一些辅助信息,如下:
在输入之前会显示输入提示信息:”Enter a number: “,这样对用户会更加友好。
PyInputPlus模块的功能远不止这些,还有很多其它的高级特性,比Python自带的Input功能强大太多,接下来会一一进行学习。
1、PyInputPlus模块的关键字参数min、max、greaterThan和lessThan
接受int和float数的inputNum()、inputInt()和inputFloat()函数具有min、max、greaterThan和lessThan关键字参数,用于指定有效值范围。
min参数表示输入的数字必须大于等于min值;
max参数表示输入的数字必须小于等于max值;
greaterThan表示输入的数字必须大于greaterThan值;
lessThan表示输入的数字必须小于lessThan值。
2、关键字参数blank
默认情况下,PyInpuPlus模块是不允许输入空格字符的,除非指定blank参数为True。
3、关键字参数limit、timeout、default
默认情况下PyInputPlus模块函数会一直提示用户输入信息,除非输入正确。如果希望某个函数经过一定次数的尝试或一定的时间后停止要求用户输入,就可以使用limit和timeout参数。
limit用来限制次数,timeout用来是限制时间,单位是秒。
4、关键字参数allowRegexes和blockRegexes
PyInputPlus也支持使用正则表达式来指定哪些字符可以输入,或者哪些不能输入。
上面的例子中,允许输入字母I,V,X,L,C,D,M,zero
上面的例子就拒绝02468数字输入,但是只有输入数字的每一位都在列表中的时候才会拒绝,这个是要特别注意的地方。
5、将自定义验证函数传递给inputCustom()
PyInputPlus模块支持调用用户自定义的函数去验证用户的输入。
来看个例子:
import pyinputplus as pyip
def addsUpToTen(numbers):
numbersList = list(numbers)
for i, digit in enumerate(numbersList):
numbersList[i] = int(digit)
if sum(numbersList) != 10:
raise Exception('The digits must add up to 10, not %s.' % (sum(numbersList)))
return int(numbers)
response = pyip.inputCustom(addsUpToTen)
print(response)
运行结果:
以上列子,必须满足每一位数字加起来为10,如果加起来不为10则显示提示信息。
以上就是关于输入验证模块PyInputPlus的有个的全部内容,对于实际项目还是非常有帮助的。
|