Python中的 PyInputPlus 模块
PyInputPlus是一个Python模块,用于获取具有附加验证功能的输入。 PyInputPlus将不断询问用户输入文本,直到他们输入有效的输入。
安装:
安装模块 通过pip命令:
pip install PyInputPlus
以下是用于接受各种类型输入的函数:
- inputNum() :接受一个数值。它需要附加参数“min”、“max”、“greaterThan”和“lessThan”作为边界。返回一个整数或浮点数。
- inputStr() :接受一个字符串值。它提供了诸如“blockRegexes”、“timeout”、“limit”等功能。
- inputInt() :接受一个整数值。这还需要额外的参数“min”、“max”、“greaterThan”和“lessThan”作为边界。返回一个整数。
- inputFloat() :接受浮点数值。还需要额外的 'min'、'max'、'greaterThan' 和 'lessThan' 参数。返回一个浮点数。
- inputBool() :接受一个布尔值。输入可以是任何不区分大小写的“真”/“假”和“T”/“F”形式。返回一个布尔值。
- inputChoice() :获取字符串列表并接受其中一个作为输入。
- inputMenu() :与 inputChoice() 类似,但选项显示为菜单中的项目。菜单项可以用字母或数字标记,使用“字母”和“编号”参数。
- inputDate() :接受 strftime 格式的日期。我们需要将此格式传递给“格式”参数。返回一个 datetime.date 对象。
- inputTime() :接受 strftime 格式的时间。返回一个 datetime.time 对象。
- inputDatetime() :接受 strftime 格式的日期和时间。返回一个 datetime.datetime 对象。
- inputYesNo() :以不区分大小写的形式接受 'yes'/'no' 或 'y'/'n'。返回“是”或“否”。
一些示例用法:
1.字符串输入:
inputStr()函数用于接受字符串输入。我们可以设置prompt参数以在输入之前定义一个提示。它类似于内置函数input()的提示参数。我们可以通过将空白参数设置为True来允许空白值作为有效输入。通过将blockRegexes参数的值设置为我们要使之无效的正则表达式模式,可以阻止某些输入(即,使这些值无效)。
Python3
import pyinputplus as pyip
# string input with
# additional parameters
inp = pyip.inputStr(prompt="Enter a string... ",
blank=True, blockRegexes = 'aeiou')
print(inp)
Python3
import pyinputplus as pyip
# integer input with
# limited number of tries
inp = pyip.inputInt(prompt = "Enter an Integer... ",
default = 0, limit = 3)
print(inp)
Python3
import pyinputplus as pyip
# integer input with
# limited time
inp = pyip.inputInt(prompt = "Enter an Integer... ",
default = 0, timeout = 2)
print(inp)
Python3
import pyinputplus as pyip
# integer input with
# specific bounds
inp = pyip.inputInt(prompt = "Enter an Integer... ",
min = 4, lessThan = 9 )
print(inp)
Python3
import pyinputplus as pyip
# menu item input
inp = pyip.inputMenu(['apple', 'banana', 'mango'])
print(inp)
Python3
import pyinputplus as pyip
# date and time input
inp = pyip.inputDatetime('Enter date and time... ',
formats = ('%m/%d/%y %H:%M:%S',
'%m.%d.%Y %H:%M:%S') )
print(inp)
输出 :
Enter a string... Hello
This response is invalid.
Enter a string... GFG
GFG
2. 整数输入:
inputInt()函数用于接受整数输入。如果传递了任何非整数输入,则函数会重试,直到给出有效输入、时间用完或超过最大尝试次数。 default参数用于在超时或尝试次数超过时设置默认值。 limit参数用于指定用户输入有效输入的最大尝试次数,之后返回默认值(如果指定),否则引发RetryLimitException 。
Python3
import pyinputplus as pyip
# integer input with
# limited number of tries
inp = pyip.inputInt(prompt = "Enter an Integer... ",
default = 0, limit = 3)
print(inp)
输出 :
Enter an Integer... hello
'hello' is not an integer.
Enter an Integer... abc
'abc' is not an integer.
Enter an Integer...
Blank values are not allowed.
0
timeout参数用于设置自第一个提示后的秒数,如果指定,则在此之后返回默认值,否则引发TimeoutException 。
Python3
import pyinputplus as pyip
# integer input with
# limited time
inp = pyip.inputInt(prompt = "Enter an Integer... ",
default = 0, timeout = 2)
print(inp)
输出 :
Enter an Integer... 4
0
min和max参数可用于设置输入的下限和上限。同样, greaterThan和lessThan参数用于设置外部边界。
Python3
import pyinputplus as pyip
# integer input with
# specific bounds
inp = pyip.inputInt(prompt = "Enter an Integer... ",
min = 4, lessThan = 9 )
print(inp)
输出 :
Enter an Integer... 3
Number must be at minimum 4.
Enter an Integer... 12
Number must be less than 9.
Enter an Integer... 8
8
3. 菜单输入:
inputMenu()函数用于显示输入的有效选择菜单。字母或编号参数可以设置为True以将项目分别标记为 A、B、C… 或 1、2、3…。默认标记是' * '。
Python3
import pyinputplus as pyip
# menu item input
inp = pyip.inputMenu(['apple', 'banana', 'mango'])
print(inp)
输出 :
Please select one of the following:
* apple
* banana
* mango
peach
'peach' is not a valid choice.
Please select one of the following:
* apple
* banana
* mango
mANgo
mango
4. 日期时间输入:
inputDatetime()函数接受传递给格式参数的列表或元组中指定的strftime格式之一的日期和时间。
Python3
import pyinputplus as pyip
# date and time input
inp = pyip.inputDatetime('Enter date and time... ',
formats = ('%m/%d/%y %H:%M:%S',
'%m.%d.%Y %H:%M:%S') )
print(inp)
输出 :
Enter date and time... 3.4.18 4:32:16
'3.4.18 4:32:16' is not a valid date and time.
Enter date and time... 3/4/18 4:32:16
2018-03-04 04:32:16