我怎么能用Python打印出字母表的第n个字母?

时间:2009-11-12 18:47:18

标签: 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]

7 个答案:

答案 0 :(得分:53)

chrord分别将字符转换为整数。所以:

chr(ord('a') + 5)

是字母'f'

答案 1 :(得分:29)

除了ASCII数学之外,您不必手动输入字母表。 string module中的string constants提供您要查找的内容。

>>> import string
>>> string.ascii_uppercase[5]
'F'
>>> 

答案 2 :(得分:4)

chr(ord('a')+5)

答案 3 :(得分:3)

如果你想真的走开(可能不是很好),你可以创建一个新类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'

答案 4 :(得分:1)

您需要使用ord功能,例如

print(ord('a')-5)

编辑:唉,我太慢了:)。

答案 5 :(得分:1)

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'

答案 6 :(得分:0)

如果您想简短一点,请尝试使用lambda表示法:

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