亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中用戶輸入錯誤了怎么辦

發布時間:2021-11-02 15:57:09 來源:億速云 閱讀:223 作者:iii 欄目:編程語言

這篇文章主要介紹“Python中用戶輸入錯誤了怎么辦”,在日常操作中,相信很多人在Python中用戶輸入錯誤了怎么辦問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python中用戶輸入錯誤了怎么辦”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

問題來源于生活。上周在做業余項目時,我遇到了一個非常有趣的設計問題:“如果用戶輸入錯誤了怎么辦?”如果輸入錯誤,就會發生以下這種情況:

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

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

當您試圖訪問不存在的密鑰時會遇到什么情況?

print(student_grades['Maple']) # Output: KeyError                         Traceback(most recent call last) <ipython-input-6-51fec14f477a> in <module> ----> print(student_grades['Maple'])  KeyError: 'Maple'

您會收到密匙錯誤(KeyError)提示。

每當dict()請求對象為字典中不存在的鍵(key)時,就會發生KeyError。接收用戶輸入時,此錯誤十分常見。例如:

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

本文將為你提供幾種處理Python字典 keyerror的方法。去努力構建一個python智能字典,它能幫你處理用戶的輸入錯誤問題。

設置默認值

一個非常簡便的方法便是在請求的key不存在時返回默認值。可以使用get()方法完成此操作:

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

解決大小寫問題

假設您構建了Python字典,其中包含特定國家的人口數據。代碼將要求用戶輸入一個國家名并輸出顯示其人口數。

# 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

然而,假設用戶輸入的是&lsquo;france&rsquo;。目前,在我們的字典里,所有的鍵的首字母均是大寫形式。那么輸出內容會是什么?

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

由于&lsquo;france&rsquo;不是字典中的鍵,因此會收到錯誤提示。

一個簡單的解決方法:用小寫字母存儲所有國家/地區名稱。另外,將用戶輸入的所有內容轉換為小寫形式。

# 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

處理拼寫錯誤

然而,假設用戶輸入的是 &lsquo;Frrance&rsquo;而不是 &lsquo;France&rsquo;。我們該如何解決此問題?

一種方法是使用條件語句。

我們會檢查給定的用戶輸入是否可用作鍵(key)。如不可用,則輸出顯示一條消息。最好將其放入一個循環語句中,并在某特殊的標志輸入上中斷(如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)

循環將繼續運行,直到用戶進入exit。

優化方法

雖然上述方法“有效”,但不夠“智能”。我們希望程序功能變強大,并能夠檢測到簡單的拼寫錯誤,例如frrance和chhina(類似于Google搜索)。

我找到了幾個適合解決key error的庫,其中我最喜歡的是標準的python庫:difflib。

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

1. # SequenceMatcher

SequenceMatcher是difflib中的類,用于比較兩個序列。我們定義它的對象如下:

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

  • a and b: 比較字符串。

  • autojunk :一種自動將某些序列項視為垃圾項的啟發式方法。

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

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]中的浮點值。

2. # get_close_matches

現提供一種基于相似性比較兩個字符串的方法。

如果我們希望找到與特定字符串相似的所有字符串(存儲于數據庫),會發生什么情況?

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

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

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

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

  • Optional cutoff:相似度必須高于此值。默認為0.6。

潛在的最佳n個匹配項將返回到一個列表中,并按相似度得分排序,最相似者優先。

來看以下示例:

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

到此,關于“Python中用戶輸入錯誤了怎么辦”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏尼特右旗| 井研县| 沂南县| 德江县| 祁连县| 黑河市| 象山县| 苍山县| 偏关县| 彩票| 印江| 新竹县| 新营市| 临沭县| 晋州市| 定安县| 黔江区| 阳原县| 大邑县| 姜堰市| 田林县| 灌云县| 商南县| 甘南县| 明光市| 铜鼓县| 徐闻县| 巴中市| 通道| 平塘县| 盐津县| 屏东县| 固原市| 桦川县| 微博| 琼中| 聂拉木县| 拉萨市| 钟山县| 上虞市| 客服|