[英]How do I make the input case-insensitive?
如何處理輸入字符串,以便所有正確拼寫的單詞都被視為相同,不區分大小寫?
例如:
只要拼寫正確,可以以任何形式輸入January
。
在這里, january
、 JANUARY
、 JaNuArY
- 應該被同等對待。
m = input("What month were you born?\n")
d = input("What day were you born?\n")
y = input("What year were you born\n")
months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
print("Your birthday is " + str(months.index(m)+1) + "/" + d + "/" + y)
盡管其他答案足以解決您的問題,但由於您在問題中提到了 python 字典,因此這里有一個更快、更整潔的方法 -
• 在列表中查找O(n)
而在字典中查找是O(1)
months = {"January": '1', "February": '2', "March": '3', "April": '4', "May": '5', "June": '6', "July": '7', "August": '8', "September": '9', "October": '10', "November": '11', "December": '12'}
m = input("What month were you born?\n")
d = input("What day were you born?\n")
y = input("What year were you born?\n")
print("Your birthday is {0}/{1}/{2}".format(months[m.lower().capitalize()], d, y))
將輸入更改為:
d = input("What day were you born?\n").lower()
y = input("What year were you born\n").lower()
這會將每個字符串轉換為全小寫字符串
在您的輸入中使用lower()
和string.capitalize()
function:
d = "jaNuARY"
d.lower().capitalize()
Out[2]: 'January'
這樣,您將始終獲得任何輸入的相同拼寫 - 一月而不是一月等,與您的字典相匹配。
這也是一個很好的解決方案,因為您不需要更改您的字典
您應該首先在months
列表中使用小寫名稱。 它應該如下所示:
months = ["january", "february", ...]
使用lower()
方法將輸入轉換為小寫。
m = input("What month were you born?\n").lower()
因此,接收到的輸入總是小寫的,你可以像原來一樣使用index
。
根據您在列表中存儲月份的方式使用.lower() 或.upper() 或[.lower() 和.capatalize()]。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.