Python beginner here. Попытка учиться, читая код здесь и там. Это произошло в программе, предназначенной для открытия файлов Excel в python. Эта функция выполняет простую работу - преобразует метку письма столбца Excel («Z» или «BB» или «CCC») в int, используя ord(). Я понимала прекрасно, пока я не видел эту часть кода преобразования:Использование ord() для преобразования букв в ints (очень простой)
if clen == 1:
return ord(column[0]) - 64
elif clen == 2:
return ((1 + (ord(column[0]) - 65)) * 26) + (ord(column[1]) - 64)
Какова цель (1 + (Ord (столбец [0]) - 65) по сравнению только с помощью (Ord (. колонок [0]) - 64) опять "1 +" кажется излишним ли эта цель
Это полная функция:
def column_index_from_string(column, fast=False):
"""Convert a column letter into a column number (e.g. B -> 2)"""
column = column.upper()
clen = len(column)
if not fast and not all('A' <= char <= 'Z' for char in column):
msg = 'Column string must contain only characters A-Z: got %s' % column
raise ColumnStringIndexException(msg)
if clen == 1:
return ord(column[0]) - 64
elif clen == 2:
return ((1 + (ord(column[0]) - 65)) * 26) + (ord(column[1]) - 64)
elif clen == 3:
return ((1 + (ord(column[0]) - 65)) * 676) + ((1 + (ord(column[1]) - 65)) * 26) + (ord(column[2]) - 64)