tamaño - ¿Cómo podría imprimir la letra n del alfabeto en Python?
convertir letras a numeros python (6)
Aparte de las matemáticas ASCII, no tiene que escribir su tabla de letras a mano. Las constantes de cadena en el string module
proporcionan lo que estaba buscando.
>>> import string
>>> string.ascii_uppercase[5]
''F''
>>>
Las matemáticas ASCII no parecen funcionar en Python:
''a'' + 5 NO FUNCIONA
¿Cómo podría imprimir rápidamente la letra n del alfabeto sin tener una matriz de letras?
Mi solución ingenua es esta:
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]
Necesitas usar la función ord
, como
print(ord(''a'')-5)
Edit: gah, yo era demasiado lento :)
Si quieres salir del camino (probablemente no muy bien) puedes crear una nueva clase 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")
Lo anterior puede ser utilizado:
>>> CharMath("a") + 5
''f''
chr
y ord
convierten caracteres de y a enteros, respectivamente. Asi que:
chr(ord(''a'') + 5)
es la letra ''f''
.
import string
print string.letters[n + is_upper*26]
Por ejemplo:
>>> n = 5
>>> is_upper = False
>>> string.letters[n+is_upper*26]
''f''
>>> is_upper = True
>>> string.letters[n+is_upper*26]
''F''
chr(ord(''a'')+5)
Al aire libre