我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解Python中的PyInputPlus模块

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解Python中的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关键字参数实现。

到此这篇关于Python中的PyInputPlus模块详解的文章就介绍到这了,更多相关Python PyInputPlus模块内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解Python中的PyInputPlus模块

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解python时间模块中的datetime模块

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致。相比于time模块,datetime模块的接口则更直观、更容
2022-06-04

详解Python中的Array模块

这篇文章主要介绍了详解Python中的Array模块,Python中的array模块是一个预定义的数组,因此其在内存中占用的空间比标准列表小得多,同时也可以执行快速的元素级别操作,例如添加、删除、索引和切片等操作,需要的朋友可以参考下
2023-05-15

python中os模块详解

os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作。比如说:绝对路径,父目录…… os.sep可以取代操作系统特定的路径分隔符。windows下为 “\”,Linux下为"/" os.linesep字符
2022-06-04

Python中模块string.py详解

一、用法字符串常量:import stringprint(string.ascii_lowercase) print(string.ascii_uppercase) print(string.ascii_letters) print(str
2022-06-04

python中os模块和sys模块的使用详解

本文主要介绍了python中os模块和sys模块的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-21

Python的io模块详解

Python的io模块提供了多个流式处理接口,具体的处理函数实现位于_pyio.py模块中。在_io.py模块中,提供了唯一的模块方法open(name, mode=None, buffering=None),但是没有read()方法。1.
2023-01-31

Python的psutil模块详解

psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息,需要的朋友可以参考下
2023-05-18

python的logging模块详解

日志级别>>>import logging>>>logging.NOTSET0>>>logging.DEBUG10>>>logging.INFO20>>>logging.WARN30>>>logging.ERROR40>>>logging.
2023-01-31

详解Python中heapq模块的用法

heapq 模块提供了堆算法。heapq是一种子节点和父节点排序的树形数据结构。这个模块提供heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2]。为了比较不存在的元素被人为是无限大的。heap最
2022-06-04

详解Python中httptools模块的使用

httptools 是一个 HTTP 解析器,它首先提供了一个 parse_url 函数,用来解析 URL。这篇文章就来和大家聊聊它的用法吧,感兴趣的可以了解一下
2023-03-03

python中的Pyperclip模块功能详解

pyperclip模块中有两个函数,分别是copy()和paste(),copy()用于向计算机的剪贴板发送文本,paste()用于从计算机剪贴板接收文本,这篇文章主要介绍了python中的Pyperclip模块,需要的朋友可以参考下
2023-03-22

python requests模块详解

requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib2提供了大部分需要的HTTP功能,但是A
2023-01-31

详解Python requests模块

前言 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。 Requests 继承
2022-06-02

python sys模块详解

sys.argv           命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc_info()     获取当前正在处理的异常类,exc_type、ex
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录