真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python中用戶(hù)輸入錯(cuò)誤了怎么辦

這篇文章主要介紹“Python中用戶(hù)輸入錯(cuò)誤了怎么辦”,在日常操作中,相信很多人在Python中用戶(hù)輸入錯(cuò)誤了怎么辦問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)ython中用戶(hù)輸入錯(cuò)誤了怎么辦”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供博山企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站制作、成都網(wǎng)站建設(shè)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為博山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

問(wèn)題來(lái)源于生活。上周在做業(yè)余項(xiàng)目時(shí),我遇到了一個(gè)非常有趣的設(shè)計(jì)問(wèn)題:“如果用戶(hù)輸入錯(cuò)誤了怎么辦?”如果輸入錯(cuò)誤,就會(huì)發(fā)生以下這種情況:

Python中的字典表示 鍵(keys)和值(values)。例如:

student_grades = {'John': 'A','Mary': 'C', 'Rob': 'B'}# To check grade of John, we call print(student_grades['John']) # Output: A

當(dāng)您試圖訪問(wèn)不存在的密鑰時(shí)會(huì)遇到什么情況?

print(student_grades['Maple']) # Output: KeyError                         Traceback(most recent call last)  in  ----> print(student_grades['Maple'])  KeyError: 'Maple'

您會(huì)收到密匙錯(cuò)誤(KeyError)提示。

每當(dāng)dict()請(qǐng)求對(duì)象為字典中不存在的鍵(key)時(shí),就會(huì)發(fā)生KeyError。接收用戶(hù)輸入時(shí),此錯(cuò)誤十分常見(jiàn)。例如:

student_name =input("Please enter student name: ") print(student_grades[student_name])

本文將為你提供幾種處理Python字典 keyerror的方法。去努力構(gòu)建一個(gè)python智能字典,它能幫你處理用戶(hù)的輸入錯(cuò)誤問(wèn)題。

設(shè)置默認(rèn)值

一個(gè)非常簡(jiǎn)便的方法便是在請(qǐng)求的key不存在時(shí)返回默認(rèn)值??梢允褂胓et()方法完成此操作:

default_grade = 'Not Available' print(student_grades.get('Maple',default_grade))# Output: # Not Available

解決大小寫(xiě)問(wèn)題

假設(shè)您構(gòu)建了Python字典,其中包含特定國(guó)家的人口數(shù)據(jù)。代碼將要求用戶(hù)輸入一個(gè)國(guó)家名并輸出顯示其人口數(shù)。

# population in millions. (Source: https://www.worldometers.info/world-population/population-by-country/)                                   population_dict= {'China':1439, 'India':1380, 'USA':331, 'France':65,'Germany':83, 'Spain':46}                                                                                # getting userinput                                   Country_Name=input('Please enterCountry Name: ')                                                                                # access populationusing country name from dict                                   print(population_dict[Country_Name])
# Output Please enter Country Name: France 65

然而,假設(shè)用戶(hù)輸入的是‘france’。目前,在我們的字典里,所有的鍵的首字母均是大寫(xiě)形式。那么輸出內(nèi)容會(huì)是什么?

Please enter Country Name:france-----------------------------------------------------------------KeyError                         Traceback (most recentcall last)  in        2 Country_Name = input('Pleaseenter Country Name: ')       3 ----> 4 print(population_dict[Country_Name])
KeyError: 'france'

由于‘france’不是字典中的鍵,因此會(huì)收到錯(cuò)誤提示。

一個(gè)簡(jiǎn)單的解決方法:用小寫(xiě)字母存儲(chǔ)所有國(guó)家/地區(qū)名稱(chēng)。另外,將用戶(hù)輸入的所有內(nèi)容轉(zhuǎn)換為小寫(xiě)形式。

# keys (Country Names) are now alllowercase         population_dict = {'china':1439, 'india':1380, 'usa':331, 'france':65,'germany':83, 'spain':46}         Country_Name=input('Please enterCountry Name: ').lower() # lowercase input                     print(population_dict[Country_Name])
Please enter Country Name:france 65

處理拼寫(xiě)錯(cuò)誤

然而,假設(shè)用戶(hù)輸入的是 ‘Frrance’而不是 ‘France’。我們?cè)撊绾谓鉀Q此問(wèn)題?

一種方法是使用條件語(yǔ)句。

我們會(huì)檢查給定的用戶(hù)輸入是否可用作鍵(key)。如不可用,則輸出顯示一條消息。最好將其放入一個(gè)循環(huán)語(yǔ)句中,并在某特殊的標(biāo)志輸入上中斷(如exit)。

population_dict = {'china':1439, 'india':1380, 'usa':331, 'france':65,'germany':83, 'spain':46}                                                        while(True):                             Country_Name=input('Please enterCountry Name(type exit to close): ').lower()                             # break from code if user enters exit                             ifCountry_Name=='exit':                                 break                                                            ifCountry_Nameinpopulation_dict.keys():                                 print(population_dict[Country_Name])                             else:                                 print("Pleasecheck for any typos. Data not Available for ",Country_Name)

循環(huán)將繼續(xù)運(yùn)行,直到用戶(hù)進(jìn)入exit。

優(yōu)化方法

雖然上述方法“有效”,但不夠“智能”。我們希望程序功能變強(qiáng)大,并能夠檢測(cè)到簡(jiǎn)單的拼寫(xiě)錯(cuò)誤,例如frrance和chhina(類(lèi)似于Google搜索)。

我找到了幾個(gè)適合解決key error的庫(kù),其中我最喜歡的是標(biāo)準(zhǔn)的python庫(kù):difflib。

difflib可用于比較文件、字符串、列表等,并生成各種形式的不同信息。該模塊提供了用于比較序列的各種類(lèi)和函數(shù)。我們將使用difflib的兩個(gè)功能:SequenceMatcher  和 get_close_matches。讓我們簡(jiǎn)單地瀏覽下這兩種功能。

1. # SequenceMatcher

SequenceMatcher是difflib中的類(lèi),用于比較兩個(gè)序列。我們定義它的對(duì)象如下:

difflib.SequenceMatcher(isjunk=None,a='', b='', autojunk=True)
  • isjunk :在比較兩個(gè)文本塊時(shí)用于標(biāo)明不需要的垃圾元素(空白,換行符等)。從而禁止通過(guò)有問(wèn)題的文本。

  • a and b: 比較字符串。

  • autojunk :一種自動(dòng)將某些序列項(xiàng)視為垃圾項(xiàng)的啟發(fā)式方法。

讓我們使用SequenceMatcher比較chinna和china這兩個(gè)字符串:

from difflib importSequenceMatcher# import                                  # creating aSequenceMatcher object comparing two strings               check =SequenceMatcher(None, 'chinna', 'china')                                  # printing asimilarity ratio on a scale of 0(lowest) to 1(highest)               print(check.ratio())               # Output               #0.9090909090909091

在以上代碼中,使用了ratio()方法。ratio返回序列相似度的度量,作為范圍[0,1]中的浮點(diǎn)值。

2. # get_close_matches

現(xiàn)提供一種基于相似性比較兩個(gè)字符串的方法。

如果我們希望找到與特定字符串相似的所有字符串(存儲(chǔ)于數(shù)據(jù)庫(kù)),會(huì)發(fā)生什么情況?

get_close_matches() 返回一個(gè)列表,其中包含可能性列表中的最佳匹配項(xiàng)。

difflib.get_close_matches(word,possibilities, n=3, cutoff=0.6)
  • word:需要匹配的字符串。

  • possibilities: 匹配單詞的字符串列表。

  • Optional n: 要返回的最大匹配數(shù)。默認(rèn)情況下是3;且必須大于0。

  • Optional cutoff:相似度必須高于此值。默認(rèn)為0.6。

潛在的最佳n個(gè)匹配項(xiàng)將返回到一個(gè)列表中,并按相似度得分排序,最相似者優(yōu)先。

來(lái)看以下示例:

from difflib importget_close_matches                                      print(get_close_matches("chinna", ['china','france','india','usa']))                 # Output                 # ['china']

到此,關(guān)于“Python中用戶(hù)輸入錯(cuò)誤了怎么辦”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


文章名稱(chēng):Python中用戶(hù)輸入錯(cuò)誤了怎么辦
標(biāo)題網(wǎng)址:http://weahome.cn/article/jhshsh.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部