📜  Python中的 PyInputPlus 模块

📅  最后修改于: 2022-05-13 01:55:00.234000             🧑  作者: Mango

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

minmax参数可用于设置输入的下限和上限。同样, greaterThanlessThan参数用于设置外部边界。

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