PyInputPlus模块能用于什么,有哪些使用技巧
Admin 2022-08-18 群英技术资讯 322 次浏览
PyInputPlus包含与input()类似的、用户多种数据(数字日期、E-mail地址等)的函数。如果用户输入了无效的内容,例如格式错误的日期或超出预期范围的数字,PyIputPlus会再次提示他们输入。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
接收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关键字参数设置为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,这样用户不需要输入任何内容。
在默认情况下,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利用正则表达式字符串列表来确定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()。例如,我们可以创建自己的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关键字参数实现。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文给大家分享了作者整理的五个python游戏开发的案例,通过具体设计思路,代码等方面详细了解python游戏开发的过程,非常的详细,希望大家能够喜欢
Python的iloc和loc区别是什么?很多刚接触Python的新手对于iloc和loc的区别以及用法可能不是很清楚,对此,这篇文章就主要给大家分享一下iloc和loc的区别以及用法展示,有需要的朋友可以看一看。
这篇文章主要介绍了python数据结构算法分析,在python的数据结构的章节中,我们上次学习到了python面向对象的思想,即我们想用程序来实现一个东西,我们需是用对象的特征来描述我们想构建的对象。感兴趣的小伙伴可以查看下面内容</P><P>
PIL网上有很多介绍,这里不再讲解。直接操作,读取一张图片,将其转换为灰度图像,并打印出来。
在Python中有许许多多的内置函数和关键字,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作。本文将详细讲解他们的使用方法,需要的可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008