簡體   English   中英

用於計算字母數字的Python代碼

[英]Python code for calculating number of an alphabet

我需要找到字母范圍內的字母數,即a = 1,b = 2,c = 3 ....所以,如果我得到a,則返回值應為1

除了聲明包含受尊重值的26個字母的字典以外,python(in內置)是否提供了一種更短的方法來查找它。

如果您知道這樣的功能,請提供幫助。

使用ord()

>>> c = 'f'
>>> ord(c) - ord('a') + 1
6

如果要讓'f'和'F'都返回6,請使用lower()

>>> c = 'F'
>>> ord(lower(c)) - ord('a') + 1
6

您可能也對chr()感興趣

>>> c = 'f'
>>> chr(ord(c) + 1)
'g'

只是:

ord(c)%32

可以同時處理上下兩個

如果您只需要A到Z,則可以使用ord:

ord(c) - ord('A') + 1
>>> alphadict = dict((x, i + 1) for i, x in enumerate(string.ascii_lowercase))
>>> alphadict['a']
1

函數ord('a')將在當前文本編碼中返回數字'a'。 您可能會接受並做一些簡單的數學運算以轉換​​為1、2、3類型映射。

TL; DR

def lettertoNumber(letter):
    return ord(letter.upper()) - 64

長期解釋

ord(char)返回該字符的Unicode數字,但我們正在尋找a = 1, b = 2, c = 3

但是在Unicode中,我們得到A = 65, B = 66, C = 67

但是,如果我們從所有這些字母中減去64,則得出A = 1, B = 2, C = 3 但這還不夠,因為我們也需要支持小寫字母!

由於字母是小寫字母,我們需要使用.upper()使字母大寫,以便它可以自動使用ord()而結果不大於26,這在TL; DR節中提供了代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM