簡體   English   中英

如何在 Python 中打印出字母表的第 n 個字母?

[英]How could I print out the nth letter of the alphabet in Python?

ASCII 數學似乎在 Python 中不起作用:

'a' + 5 不起作用

如何在沒有字母數組的情況下快速打印出字母表的第 n 個字母?

我天真的解決方案是這樣的:

letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
print letters[5]

chrord將字符從整數轉換為整數。 所以:

chr(ord('a') + 5)

是字母'f'

撇開 ASCII 數學不談,您不必手動鍵入字母表。 string module字符串常量提供了您要查找的內容。

>>> import string
>>> string.ascii_uppercase[5]
'F'
>>> 
chr(ord('a')+5)

如果你真的想避開(可能不是很好),你可以創建一個新的 CharMath 類:

class CharMath:
    def __init__(self,char):
        if len(char) > 1: raise IndexError("Not a single character provided")
        else: self.char = char
    def __add__(self,num):
        if type(num) == int or type(num) == float: return chr(ord(self.char) + num)
        raise TypeError("Number not provided")

以上可以使用:

>>> CharMath("a") + 5
'f'

您需要使用ord功能,例如

print(ord('a')-5)

編輯:啊,我太慢了:)

import string
print string.letters[n + is_upper*26]

例如:

>>> n = 5
>>> is_upper = False
>>> string.letters[n+is_upper*26]
'f'
>>> is_upper = True
>>> string.letters[n+is_upper*26]
'F'

如果您喜歡簡短,請嘗試使用 lambda 表示法:

>>> A = lambda c: chr(ord('a')+c)
>>> A(5)
'f'

暫無
暫無

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

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