THE PYINPUTPLUS MODULE

PyInputPlus 模块可用以检查输入有效性,避免手工编写代码。
这个手工代码的例子中有一段,except后可不指定exception,表示所有的exception:

try:code block
except:code block

PyInputPlus不在标准库中,安装如下:

$ pip3 install --user pyinputplus

PyInputPlus提供一系列类似于input()的函数,可让用户输入各种格式如邮件,数字,是否等的数据,并为用户做校验:

  • inputStr()
  • inputNum() - 可指定范围
  • inputChoice()
  • inputMenu() - 菜单可指定bullet
  • inputDate()
  • inputTime()
  • inputDatetime()
  • inputYesNo() - 返回yes或no
  • inputBool() - 返回布尔值
  • inputEmail()
  • inputFilepath() - 只校验格式,不校验路径是否真实存在
  • inputPassword()

input只让用户输入一次,但PyInputPlus系列函数只会在用户输入正确格式的值或强制取消时才会退出。

>>> import pyinputplus as pyip>>> response = pyip.inputNum('Enter number:')
Enter number:five
'five' is not a number.
Enter number:5
>>> response
5
>>> response = pyip.inputNum('Enter num: ', min=4)
Enter num: 3
Number must be at minimum 4.
Enter num: 5
>>> response = pyip.inputNum('>', min=4, lessThan=6)
>7
Number must be less than 6.
>5>>> response = pyip.inputPassword('Enter Password:')
Enter Password:********
>>> response
'Welcome1'>>> response = pyip.inputYesNo('Enter Yes or No:')
Enter Yes or No:Y
>>> response
'yes'>>> response = pyip.inputBool('Enter True or False:')
Enter True or False:T
>>> response
True>>> response = pyip.inputEmail('Enter Email:')
Enter Email:abc@foobar.com
>>> response
'abc@foobar.com'>>> response = pyip.inputFilepath('Enter Path:')
Enter Path:./a/b/c
>>> response
'./a/b/c'

还有一些特殊的控制,如limit可控制输入的次数,timeout可控制输入的超时。如超出控制会返回RetryLimitExceptionTimeoutException
default可指定默认值,默认值为None或字符串。

详细的示例和帮助可参考网站或在线帮助:

>>> import pyinputplus as pyip
>>> help(pyip.inputChoice)

可以结合正则表达式,allowRegexes指定允许的格式,blockRegexes指定不允许的格式。

inputCustom可以指定自定义的校验函数。

$ cat customValidate.py
import pyinputplus as pyipdef addsUpToTen(numbers):numbersList = list(numbers)for i, digit in enumerate(numbersList):numbersList[i] = int(digit)if sum(numbersList) != 10:raise Exception(f'The digits must add up to 10, not {(sum(numbersList))}')return int(numbers) # Return an int form of numbers.pyip.inputCustom(addsUpToTen, prompt='Please input number, sum of digits equals to 10:')$ python3 customValidate.py
Please input number, sum of digits equals to 10:123
The digits must add up to 10, not 6.
Please input number, sum of digits equals to 10:234
The digits must add up to 10, not 9.
Please input number, sum of digits equals to 10:2341

有几点需要说明:

# 字符串可以转换为list
>>> list('1234')
['1', '2', '3', '4']
# 数字list可以直接求和
>>> sum([1, 2, 3])
6
# enumerate返回序号(默认由0开始)和各元素
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

项目: HOW TO KEEP AN IDIOT BUSY FOR HOURS

项目: MULTIPLICATION QUIZ

遗留问题

运行程序multiplicationquiz.py报错module 're' has no attribute 'Pattern'
最后将版本由3.6.8更新为3.8.1就不报错了。3.8.1的安装见如何用源代码安装Python 3.8.1

AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第8章:INPUT VALIDATION相关推荐

  1. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第10章:ORGANIZING FILES

    SHUTIL 模块 shutil是shell utility的简称,使用此模块需要import shutil. 详见在线文档,在线帮助见help(shutil) >>> shutil ...

  2. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第2章:FLOW CONTROL

    在流程图中,开始和结束圆角矩形表示,菱形表示流控分支,矩形表示实际操作. 布尔值 布尔值包括两个常数,即True和False. 布尔的命名来源于数学家George Boole. 比较操作符 包括==, ...

  3. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第6章:MANIPULATING STRINGS

    操作字符串 字符串可以用单引号或双引号包围,建议用单引号. 如果字符串中含单引号或双引号,可以用\转移(escape).例如\\, \', \", \n等. >>> a=' ...

  4. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第12章:WEB SCRAPING

    Web Scraping是指用程序来下载和处理网络上的内容.Scrap是铲,刮和削的意思. 本章介绍的模块包括webbrowser,requests,bs4和selenium. 项目: 使用WEBBR ...

  5. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第9章:READING AND WRITING FILES

    本章需要用到以下的模块: from pathlib import Path import os 文件和文件路径 文件由文件名和路径组成.Linux以/(forward slash)为根路径,Windo ...

  6. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第19章:MANIPULATING IMAGES

    本章介绍Pillow模块,可处理图形文件.安装如下: # pillow安装依赖于JPEG源代码 $ sudo yum install libjpeg-turbo-devel $ pip3 instal ...

  7. Automate the Boring Stuff with Python学习笔记1

    将<Automate the Boring Stuff with Python>的语法部分学完了,开始依葫芦画瓢做第一个项目. #! python3 # pw.py - An insecu ...

  8. Python读书笔记第五章:运算符与表达式

    1.运算符 2.运算符优先级 3.表达式 length = 5 breadth = 2 area = length * breadth print 'Area is', area print 'Per ...

  9. Doing Math with Python读书笔记-第6章:Drawing Geometric Shapes and Fractals

    本章学习利用matplotlib画几何图形和分形(fractal) 使用MATPLOTLIB库PATCHES包画几何图形 回顾之前的画图: plt.plot(...) plt.show() 也可以拆解 ...

最新文章

  1. R语言ggplot2可视化保存高分辨率的图片(high resolution)实战
  2. win7 安装apache2.2服务错误
  3. 如何模拟鼠标的拖拽行为.
  4. 机房收费系统——需求分析
  5. HDU2066:一个人的旅行(Dijkstra)
  6. JS node 后端签名前端文件直传ali-oss解决方案
  7. QtCreate编译器在调试程序时,右侧的变量表达式值视图被不小心关闭了
  8. bazel 链接第三方动态库_如何自己制作静态库?
  9. 反应机理_介绍一种化学反应机理合成环戊酮
  10. C语言小程序:找出100以内素数
  11. 2018年全球十大突破性技术
  12. Layui开关添加弹出确认框及layer.confirm的回调
  13. Microsoft visio 2010之简单使用
  14. 前端图像处理之马赛克
  15. web项目 Eclipse 中 jsp 页面 没有代码提示
  16. win10录屏文件在哪?怎么更改win10录屏保存位置
  17. 从一篇知乎问答引发的Web地图探索
  18. 【奥卡姆剃刀】一条短信骗走所有财产的分析
  19. 多天线MIMO无线信道中,已知CSI时,关于莱斯信道(瑞利信道)矩阵的MATLAB代码。
  20. 单片机怎么通过按键控制计时器的开始和停止_学习电路仿真:基于proteus电路仿真软件的交通灯控制电路设计...

热门文章

  1. 极客爱情 2.1 | 从你的编程世界路过
  2. 东北大学2018计算机录取分数,东北大学分数线2018 各省最新录取分数线
  3. 什么是中视频计划,这个文章正确解析不误导
  4. USACO-Charm Bracelet
  5. ttf字体文件子集生成工具
  6. 不规则四边形的平行四边形化
  7. 山西大同大学计算机科学与技术在哪个校区,山西大同大学有几个校区及校区地址 哪...
  8. c语言:输入长和宽计算长方形周长和宽
  9. [XDOJ] ISBN号码
  10. mysql数据库怎么冷备份恢复_MySQL数据库的备份与恢复