最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python中的PyInputPlus模塊

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

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

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

安裝PyInputPlus

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

pip install --user pyinputplus

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

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

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

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

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

>>> 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è)置為T(mén)rue,否則不允許輸入空格字符:

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

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

當(dāng)你使用這些關(guān)鍵字參數(shù)并傳入default關(guān)鍵字參數(shù)時(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ù)后不會(huì)引發(fā)RetryLimitException,只會(huì)返回字符串‘N/A’.

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

我們也可以使用正則表達(dá)式指定輸入是否被接受。關(guān)鍵字參數(shù)allowRegexes和blockRegexes利用正則表達(dá)式字符串列表來(lái)確定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

如果同時(shí)指定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'

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

可以編寫(xiě)函數(shù)以執(zhí)行自定義的驗(yàn)證邏輯,并將函數(shù)傳遞給inputCustom()。例如,我們可以創(chuàng)建自己的addsUpToTen()函數(shù),然后將其傳遞給inputCustom()。注意,函數(shù)調(diào)用看起來(lái)像inputCustom(addsUpToTen),而不是inputCustom(addsUpToTen()),因?yàn)槲覀兪菍ddsUpToTen()函數(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功能,該功能可通過(guò)blank、limit、timeout、default、allowRegexes和blockRegexes關(guān)鍵字參數(shù)實(shí)現(xiàn)。

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

相關(guān)文章

  • 關(guān)于django 數(shù)據(jù)庫(kù)遷移(migrate)應(yīng)該知道的一些事

    關(guān)于django 數(shù)據(jù)庫(kù)遷移(migrate)應(yīng)該知道的一些事

    今天小編就為大家分享一篇關(guān)于django 數(shù)據(jù)庫(kù)遷移(migrate)應(yīng)該知道的一些事,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python和C語(yǔ)言利用棧分別實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換

    Python和C語(yǔ)言利用棧分別實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了Python和C語(yǔ)言如何利用棧的數(shù)據(jù)結(jié)構(gòu)分別實(shí)現(xiàn)將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-07-07
  • 把vgg-face.mat權(quán)重遷移到pytorch模型示例

    把vgg-face.mat權(quán)重遷移到pytorch模型示例

    今天小編就為大家分享一篇把vgg-face.mat權(quán)重遷移到pytorch模型示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 基于tf.shape(tensor)和tensor.shape()的區(qū)別說(shuō)明

    基于tf.shape(tensor)和tensor.shape()的區(qū)別說(shuō)明

    這篇文章主要介紹了基于tf.shape(tensor)和tensor.shape()的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • pycham查看程序執(zhí)行的時(shí)間方法

    pycham查看程序執(zhí)行的時(shí)間方法

    今天小編就為大家分享一篇pycham查看程序執(zhí)行的時(shí)間方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • python中的Elasticsearch操作匯總

    python中的Elasticsearch操作匯總

    這篇文章主要介紹了python中的Elasticsearch操作匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 使用python編寫(xiě)udp協(xié)議的ping程序方法

    使用python編寫(xiě)udp協(xié)議的ping程序方法

    下面小編就為大家分享一篇使用python編寫(xiě)udp協(xié)議的ping程序方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python之wxPython菜單使用詳解

    python之wxPython菜單使用詳解

    這篇文章主要介紹了python中wxPython菜單使用方法,可實(shí)現(xiàn)給彈出菜單項(xiàng)添加圖標(biāo)的功能,在Python程序設(shè)計(jì)中非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • python 讀取豎線分隔符的文本方法

    python 讀取豎線分隔符的文本方法

    今天小編就為大家分享一篇python 讀取豎線分隔符的文本方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題

    解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題

    這篇文章主要介紹了解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論

高清| 镇雄县| 茶陵县| 宜昌市| 维西| 平阳县| 资兴市| 高邑县| 阿鲁科尔沁旗| 紫云| 虹口区| 富阳市| 察隅县| 嫩江县| 新郑市| 井研县| 盐津县| 西充县| 通城县| 西宁市| 公主岭市| 凭祥市| 隆尧县| 明溪县| 宜春市| 钟山县| 绥阳县| 仁化县| 景德镇市| 抚远县| 元氏县| 双流县| 雷州市| 繁峙县| 安顺市| 嵊州市| 莎车县| 大兴区| 诸城市| 长沙市| 什邡市|