PyInputPlus模块能用于什么,有哪些使用技巧

Admin 2022-08-18 群英技术资讯 322 次浏览

这篇文章主要介绍“PyInputPlus模块能用于什么,有哪些使用技巧”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PyInputPlus模块能用于什么,有哪些使用技巧”文章能帮助大家解决问题。

 
“输入验证”代码检查用户输入值,在Python中我们用的最多的是input()函数,但是有些情况下反复使用input()函数可能会遗漏某些场景,并且该函数允许无效输入通过检查。因此我们需要使用Python的第三方模块PyInputPlus进行输入验证。

PyInputPlus包含与input()类似的、用户多种数据(数字日期、E-mail地址等)的函数。如果用户输入了无效的内容,例如格式错误的日期或超出预期范围的数字,PyIputPlus会再次提示他们输入。PyInputPlus还包含其他有用的功能,例如提示用户的次数限制和时间限制(如果要求用户在时限内作出响应)。

安装PyInputPlus

PyInputPlus不是Python标准库的一部分,因此需要使用pip单独安装。命令如下:

pip install --user pyinputplus

PyInputPlus具有以下几种用于不同类型输入的函数:

inputStr()类似于内置的input()函数,但具有一般的PyInputPlus功能inputNum()确保用户输入数字并返回int或float值,这取决于数字是否包含小数点inputChoice()确保用户输入习题提供的选项之一inputMenu()与inputChoice类似,但提供一个带有数字或字母选项的菜单inputDatetime()确保用户输入日期和时间inputYesNo()确保用户输入“yes”或“no”响应inputBool()类似inputYesNo(),但接收“True”或“False”响应,并返回一个布尔值inputEmail()确保用户输入有效的E-mail地址inputFilepath()确保用户输入有效的文件路径和文件名,并可以选择检查是否存在具有该名称的文件inputPassword()类似于内置的input(),但是在用户输入时显示*字符,因此不会在屏幕上显示密码或者其他敏感信息

只要输入了无效内容,以上函数就会自动提示用户:

>>> import pyinputplus as pyip
>>> response = pyip.inputNum()
five
'five' is not a number
10
>>> response
10

每次调用PyInputPlus模块的函数时,import语句中的as pyip代码让我们不必输入pyinputplus,而是可以使用较短的pyip名称。正如可以将字符串传递给input()以提供提示一样,也可以将字符串传递给PyInputPlus模块的函数的prompt关键字参数来显示提示:

>>> import pyinputplus as pyip
>>> response = pyip.inputInt(prompt='Enter a number')
Enter a number:cat
'cat' is not an Integer.
Enter a number:10
>>> response
10

关键字参数min、max、greaterThan和lessThan

接收int和float数的inputNum()、inputInt()和inputFloat()函数还具有min、max、greaterThan和lessThan关键字参数,用于指定有效值范围,例如如下例子:

>>> import pyinputplus as pyip
>>> response = pyip.inputNum('Enter num: ', min=4)
Enter num: 3
Input must be at minimum:4
Enter num: 4
>>> response
4
>>> response = pyip.inputNum('Enter num: ', greaterThan=4)
Enter num: 4
Input must be greater than 4.
Enter num: 5
>>> response
5
>>> response = pyip.inputNum('Enter num: ', min=4, lessThan=6)
Enter num: 6
Input must be less than 6.
Enter num: 3
Input must be at minimum 4.
Enter num: 4
>>> response
4

关键字参数blank

在默认情况下,除非将blank关键字参数设置为True,否则不允许输入空格字符:

>>> import pyinputplus as pyip
>>> response = pyip.inputNum('Enter num: ')
Enter num: (blank input entered here)
Blank values are not allowed.
Enter num: 40
>>> response
40
>>> response = pyip.inputNum(blank=True)
(blank input entered here)
>>> response
''

如果想使输入可选,使用blank=True,这样用户不需要输入任何内容。

关键字参数limit、timeout和default

在默认情况下,PyInputPlus模块的函数在程序运行时会一直要求用户提供有效输入,如果希望某个函数在经过一定次数的尝试或一定的时间后停止要求用户输入,就可以使用limit和timeout关键字参数。用limit关键字参数传递一个整数,以确定PyInputPlus的函数在放弃之前尝试接受有效输入多少次。用timeout关键字参数传递一个整数,以确定用户在多少秒之内必须提供有效输入,然后PyInputPlus模块的函数会放弃。

如果用户未能提供有效输入,那么这些关键字参数将分别导致函数引发RetryLimitException或TimeoutException异常。

当你使用这些关键字参数并传入default关键字参数时,该函数将返回默认值,而不是引发异常。例如:

response = pyip.inputNum(limit=2, default='N/A')
hello
'hello' is not a number
world
'world' is not a number
>>> response
'N/A'

inputNum()函数使用了default关键字参数后不会引发RetryLimitException,只会返回字符串‘N/A’.

关键字参数allowRegexes和blockRegexes

我们也可以使用正则表达式指定输入是否被接受。关键字参数allowRegexes和blockRegexes利用正则表达式字符串列表来确定PyInputPlus模块的函数将接受或拒绝哪些内容作为有效输入。例如,使用inputNum()函数将接收罗马数字以及常规数字作为有效输入:

import pyinputplus as pyip
>>> response = pyip.inputNum(allowRegexes=[r'(I|V|X|L|C|D|M)+', r'zero'])
XLII
>>> response
'XLII'

我们还可以用blockRegexes关键字参数指定PyInputPlus模块的函数不接收的正则表达式字符串列表:

import pyinputplus as pyip
>>> response = pyip.inputNum(blockRegexes=[r'[02468]$'])
42
This response is invalid.
43
>>> response
43

如果同时指定allowRegexes和blockRegexes参数,那么允许列表将优先于阻止列表。例如:

import pyinputplus as pyip
>>> response = pyip.inputStr(allowRegexes=[r'caterpillar', 'category'], blockRegexes=[r'cat'])
cat
This response is invalid
catastrophe
This response is invalid
category
>>> response
'category'

将自定义验证函数传递给inputCustom()

可以编写函数以执行自定义的验证逻辑,并将函数传递给inputCustom()。例如,我们可以创建自己的addsUpToTen()函数,然后将其传递给inputCustom()。注意,函数调用看起来像inputCustom(addsUpToTen),而不是inputCustom(addsUpToTen()),因为我们是将addsUpToTen()函数本身传递给inputCustom(),而不是调用addsUpToTen()函数并传递其返回值:

import pyinputplus as pyip
def addsUpToTen(numbers):
    numbersList = list(numbers)
    for i,digit in enumerate(numersList):
        numbersList[i] = int(digit)
    if sum(numbersList) != 10:
        raise Exception('The digits must add up to 10,not %s. ' %(sum(numbersList)))
    return int(number)
>>> response = pyip.inputCustom(addsUpToTen)
123
The digit must add up to 10,not 6.
55
>>> response
55

inputCustom()函数还支持常规的PyInputPlus功能,该功能可通过blank、limit、timeout、default、allowRegexes和blockRegexes关键字参数实现。


感谢各位的阅读,以上就是“PyInputPlus模块能用于什么,有哪些使用技巧”的内容了,经过本文的学习后,相信大家对PyInputPlus模块能用于什么,有哪些使用技巧都有更深刻的体会了吧。这里是群英网络,小编将为大家推送更多相关知识点的文章,欢迎关注! 群英智防CDN,智能加速解决方案
标签: PyInputPlus模块

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服