欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python中的PyInputPlus模塊

 更新時間:2022年05月30日 14:19:55   作者:TANGYRun  
這篇文章主要介紹了Python中的PyInputPlus模塊詳解,PyInputPlus包含與input()類似的、用戶多種數(shù)據(jù)(數(shù)字日期、E-mail地址等)的函數(shù),PyInputPlus還包含其他有用的功能,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

“輸入驗證”代碼檢查用戶輸入值,在Python中我們用的最多的是input()函數(shù),但是有些情況下反復(fù)使用input()函數(shù)可能會遺漏某些場景,并且該函數(shù)允許無效輸入通過檢查。因此我們需要使用Python的第三方模塊PyInputPlus進(jìn)行輸入驗證。

PyInputPlus包含與input()類似的、用戶多種數(shù)據(jù)(數(shù)字日期、E-mail地址等)的函數(shù)。如果用戶輸入了無效的內(nèi)容,例如格式錯誤的日期或超出預(yù)期范圍的數(shù)字,PyIputPlus會再次提示他們輸入。PyInputPlus還包含其他有用的功能,例如提示用戶的次數(shù)限制和時間限制(如果要求用戶在時限內(nèi)作出響應(yīng))。

安裝PyInputPlus

PyInputPlus不是Python標(biāo)準(zhǔn)庫的一部分,因此需要使用pip單獨安裝。命令如下:

pip install --user pyinputplus

PyInputPlus具有以下幾種用于不同類型輸入的函數(shù):

inputStr()類似于內(nèi)置的input()函數(shù),但具有一般的PyInputPlus功能inputNum()確保用戶輸入數(shù)字并返回int或float值,這取決于數(shù)字是否包含小數(shù)點inputChoice()確保用戶輸入習(xí)題提供的選項之一inputMenu()與inputChoice類似,但提供一個帶有數(shù)字或字母選項的菜單inputDatetime()確保用戶輸入日期和時間inputYesNo()確保用戶輸入“yes”或“no”響應(yīng)inputBool()類似inputYesNo(),但接收“True”或“False”響應(yīng),并返回一個布爾值inputEmail()確保用戶輸入有效的E-mail地址inputFilepath()確保用戶輸入有效的文件路徑和文件名,并可以選擇檢查是否存在具有該名稱的文件inputPassword()類似于內(nèi)置的input(),但是在用戶輸入時顯示*字符,因此不會在屏幕上顯示密碼或者其他敏感信息

只要輸入了無效內(nèi)容,以上函數(shù)就會自動提示用戶:

>>> import pyinputplus as pyip
>>> response = pyip.inputNum()
five
'five' is not a number
10
>>> response
10

每次調(diào)用PyInputPlus模塊的函數(shù)時,import語句中的as pyip代碼讓我們不必輸入pyinputplus,而是可以使用較短的pyip名稱。正如可以將字符串傳遞給input()以提供提示一樣,也可以將字符串傳遞給PyInputPlus模塊的函數(shù)的prompt關(guān)鍵字參數(shù)來顯示提示:

>>> 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

關(guān)鍵字參數(shù)min、max、greaterThan和lessThan

接收int和float數(shù)的inputNum()、inputInt()和inputFloat()函數(shù)還具有min、max、greaterThan和lessThan關(guān)鍵字參數(shù),用于指定有效值范圍,例如如下例子:

>>> 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

關(guān)鍵字參數(shù)blank

在默認(rèn)情況下,除非將blank關(guān)鍵字參數(shù)設(shè)置為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,這樣用戶不需要輸入任何內(nèi)容。

關(guān)鍵字參數(shù)limit、timeout和default

在默認(rèn)情況下,PyInputPlus模塊的函數(shù)在程序運行時會一直要求用戶提供有效輸入,如果希望某個函數(shù)在經(jīng)過一定次數(shù)的嘗試或一定的時間后停止要求用戶輸入,就可以使用limit和timeout關(guān)鍵字參數(shù)。用limit關(guān)鍵字參數(shù)傳遞一個整數(shù),以確定PyInputPlus的函數(shù)在放棄之前嘗試接受有效輸入多少次。用timeout關(guān)鍵字參數(shù)傳遞一個整數(shù),以確定用戶在多少秒之內(nèi)必須提供有效輸入,然后PyInputPlus模塊的函數(shù)會放棄。

如果用戶未能提供有效輸入,那么這些關(guān)鍵字參數(shù)將分別導(dǎo)致函數(shù)引發(fā)RetryLimitException或TimeoutException異常。

當(dāng)你使用這些關(guān)鍵字參數(shù)并傳入default關(guān)鍵字參數(shù)時,該函數(shù)將返回默認(rèn)值,而不是引發(fā)異常。例如:

response = pyip.inputNum(limit=2, default='N/A')
hello
'hello' is not a number
world
'world' is not a number
>>> response
'N/A'

inputNum()函數(shù)使用了default關(guān)鍵字參數(shù)后不會引發(fā)RetryLimitException,只會返回字符串‘N/A’.

關(guān)鍵字參數(shù)allowRegexes和blockRegexes

我們也可以使用正則表達(dá)式指定輸入是否被接受。關(guān)鍵字參數(shù)allowRegexes和blockRegexes利用正則表達(dá)式字符串列表來確定PyInputPlus模塊的函數(shù)將接受或拒絕哪些內(nèi)容作為有效輸入。例如,使用inputNum()函數(shù)將接收羅馬數(shù)字以及常規(guī)數(shù)字作為有效輸入:

import pyinputplus as pyip
>>> response = pyip.inputNum(allowRegexes=[r'(I|V|X|L|C|D|M)+', r'zero'])
XLII
>>> response
'XLII'

我們還可以用blockRegexes關(guān)鍵字參數(shù)指定PyInputPlus模塊的函數(shù)不接收的正則表達(dá)式字符串列表:

import pyinputplus as pyip
>>> response = pyip.inputNum(blockRegexes=[r'[02468]$'])
42
This response is invalid.
43
>>> response
43

如果同時指定allowRegexes和blockRegexes參數(shù),那么允許列表將優(yōu)先于阻止列表。例如:

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'

將自定義驗證函數(shù)傳遞給inputCustom()

可以編寫函數(shù)以執(zhí)行自定義的驗證邏輯,并將函數(shù)傳遞給inputCustom()。例如,我們可以創(chuàng)建自己的addsUpToTen()函數(shù),然后將其傳遞給inputCustom()。注意,函數(shù)調(diào)用看起來像inputCustom(addsUpToTen),而不是inputCustom(addsUpToTen()),因為我們是將addsUpToTen()函數(shù)本身傳遞給inputCustom(),而不是調(diào)用addsUpToTen()函數(shù)并傳遞其返回值:

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()函數(shù)還支持常規(guī)的PyInputPlus功能,該功能可通過blank、limit、timeout、default、allowRegexes和blockRegexes關(guān)鍵字參數(shù)實現(xiàn)。

到此這篇關(guān)于Python中的PyInputPlus模塊詳解的文章就介紹到這了,更多相關(guān)Python PyInputPlus模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • dataframe 按條件替換某一列中的值方法

    dataframe 按條件替換某一列中的值方法

    今天小編就為大家分享一篇dataframe 按條件替換某一列中的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python中有幫助函數(shù)嗎

    python中有幫助函數(shù)嗎

    在本篇文章里小編給大家分享的是一篇關(guān)于python幫助函數(shù)詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 關(guān)于python中map函數(shù)的使用

    關(guān)于python中map函數(shù)的使用

    這篇文章主要介紹了關(guān)于python中map函數(shù)的使用,map函數(shù)也是python中的一個內(nèi)置函數(shù),用法同之前講過的filter函數(shù)類似,需要的朋友可以參考下
    2023-04-04
  • Python實戰(zhàn)小項目之Mnist手寫數(shù)字識別

    Python實戰(zhàn)小項目之Mnist手寫數(shù)字識別

    MNIST 數(shù)據(jù)集已經(jīng)是一個被”嚼爛”了的數(shù)據(jù)集, 很多教程都會對它”下手”, 幾乎成為一個 “典范”. 不過有些人可能對它還不是很了解, 下面通過一個小實例來帶你了解它
    2021-10-10
  • python采用django框架實現(xiàn)支付寶即時到帳接口

    python采用django框架實現(xiàn)支付寶即時到帳接口

    這篇文章主要介紹了python采用django框架實現(xiàn)支付寶即時到帳接口的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 如何通過python實現(xiàn)IOU計算代碼實例

    如何通過python實現(xiàn)IOU計算代碼實例

    這篇文章主要介紹了如何通過python實現(xiàn)IOU計算代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python探索之爬取電商售賣信息代碼示例

    Python探索之爬取電商售賣信息代碼示例

    這篇文章首先簡單介紹了網(wǎng)絡(luò)爬蟲的基本概念,然后向大家分享了一段有關(guān)爬取電商售賣信息的實例代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • python制作一個桌面便簽軟件

    python制作一個桌面便簽軟件

    這篇文章主要介紹了python制作一個桌面便簽軟件分別給大家附上ubuntu和windows版的程序及源碼,有需要的小伙伴可以參考下。
    2015-08-08
  • Python中常用的os操作匯總

    Python中常用的os操作匯總

    這篇文章主要匯總了Python中常用的os操作,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • 關(guān)于Python網(wǎng)絡(luò)爬蟲框架scrapy

    關(guān)于Python網(wǎng)絡(luò)爬蟲框架scrapy

    這篇文章主要介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲框架scrapy,爬蟲框架是實現(xiàn)爬蟲功能的一個軟件結(jié)構(gòu)和功能組件的集合,需要的朋友可以參考下
    2023-04-04

最新評論