Skip to content

Commit b8654a4

Browse files
committed
#32 - Python
1 parent b1cf9b3 commit b8654a4

File tree

1 file changed

+60
-0
lines changed
  • Retos/Reto #32 - LA COLUMNA DE EXCEL [Media]/python

1 file changed

+60
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"""
2+
Crea una función que calcule el número de la columna de una hoja de Excel
3+
teniendo en cuenta su nombre.
4+
- Las columnas se designan por letras de la "A" a la "Z" de forma infinita.
5+
- Ejemplos: A = 1, Z = 26, AA = 27, CA = 79.
6+
"""
7+
8+
def column_number(row: str) -> int:
9+
"""
10+
Convierte una etiqueta de columna de Excel a su número entero correspondiente.
11+
12+
Excel asigna letras a las columnas de forma secuencial con un sistema numérico
13+
posicional en base 26, donde:
14+
A = 1, B = 2, ..., Z = 26,
15+
AA = 27, AB = 28, ..., AZ = 52,
16+
BA = 53, y así sucesivamente.
17+
18+
Ejemplos:
19+
>>> column_number("A")
20+
1
21+
>>> column_number("Z")
22+
26
23+
>>> column_number("AA")
24+
27
25+
>>> column_number("CA")
26+
79
27+
28+
args:
29+
row (str): Cadena formada únicamente por letras (A-Z o a-z) que representa
30+
el nombre de la columna en Excel.
31+
32+
returns:
33+
int: El número de columna correspondiente.
34+
35+
raises:
36+
ValueError: Si la cadena está vacía.
37+
TypeError: Si la cadena contiene caracteres no alfabéticos.
38+
39+
"""
40+
if not row:
41+
raise ValueError("Error. El valor de entrada no puede estar vacio.")
42+
if not row.isalpha():
43+
raise TypeError("Error. Solo se aceptan letras del abecedario.")
44+
45+
row = row.upper()
46+
result = 0
47+
48+
for char in row:
49+
result = result * 26 + (ord(char) - ord('A') + 1)
50+
51+
return result
52+
53+
54+
if __name__ == "__main__":
55+
print(column_number("A"))
56+
print(column_number("Z"))
57+
print(column_number("AA"))
58+
print(column_number("CA"))
59+
print(column_number("XFD"))
60+
print(column_number("ZZZZ"))

0 commit comments

Comments
 (0)