Напишите программу для поиска меток столбцов Excel по заданному количеству столбцов в Python.

Столбцы Microsoft Excel помечаются стилем A, B, C,., Z, AA, AB, AC,., AZ, BA, BB, . ЗЗ, ААА, ААВ. Скажем, столбец 1 будет помечен как A, столбец 2 будет помечен как B, а столбец 27 будет помечен как AA.

Проблема: по количеству столбцов найдите соответствующую метку столбца в Excel.

Например:

Вход Выход 26 Z 51 AY 52 AZ 80 CB 676 YZ 702 ZZ 705 AAC

В этой статье TipsMake.com вместе с вами научится писать программу для поиска меток столбцов Excel по заданному количеству столбцов в Python.

Способ 1:

Предположим, у нас есть число n, допустим, n = 28. Нам нужно найти метку столбца в Excel, соответствующую n. Нам нужно рассмотреть остаток операции n, деленный на 26.

Если n делится на 26, а остаток равен 0 (это означает, что n равно 26, 52,.), то мы помещаем Z в выходную строку, и n становится n/26-1, потому что здесь мы 26 – это Z, когда на самом деле это 25-е число. для.

Точно так же, если остаток не равен нулю (например, 1, 2, 3,.), тогда мы просто вставляем соответствующий символ в строку и делаем n = n/26.

Наконец, мы переворачиваем строку и возвращаем результат.

Например:

n = 700 Số dư của phép toán (n% 26) là 24. Do đó, chúng ta đưa X vào trong chuỗi output và n trở thành n/26 với kết quả là 26. Số dư c ủa phép toán 26%26 là 0 Do đó, chúng ta đưa Z vào trong chuỗi output và n trở thành n/26-1 với kết quả là 0.

Вот пример кода для справки:

# Программа на Python для поиска имени столбца Excel из # заданного номера столбца MAX = 50 # Функция для печати имени столбца Excel # для заданного номера столбца def printString(n): # Для сохранения результата (имя столбца Excel) string = (“� “) * MAX # Чтобы сохранить текущий индекс в str, который является результатом i = 0, в то время как n > 0: # Найдите остаток rem = n % 26 # если остаток равен 0, то # ‘Z’ должен быть в выводе, если rem = = 0: string(i) = ‘Z’ i += 1 n = (n / 26) – 1 else: string(i) = chr((rem – 1) + ord(‘A’)) i += 1 n = n / 26 string(i) = ‘�’ # Перевернуть строку и распечатать результат string = string(::-1) print “”.join(string) # Программа-драйвер для проверки вышеуказанной функции printString(26) printString (51) printString(52) printString(80) printString(676) printString(702) printString(705) # Этот код предоставлен БХАВЬЯ ДЖЕЙН

Возвращаемый результат:

Z AY AZ CB YZ ZZ AAC

Способ 2:

Эта задача аналогична задаче преобразования десятичного числа в двоичное, но вместо двоичного только с 2 числами 0 и 1 здесь у нас 26 символов от A до Z. Поэтому вместо них мы будем выполнять задачу преобразования с коэффициентом 26. бинарного фактора.

Это интересная проблема, потому что в этой системе счисления у нас не будет нуля, потому что A представляет 1, B представляет 2 и, наконец, Z представляет 26.

Чтобы облегчить понимание проблемы, мы подойдем к ней в два этапа:

1. Преобразуйте число в коэффициент 26, предполагая, что 0 все еще присутствует в системе.

2. Измените коэффициент на систему ноль-ноль.

Вот пример:

Шаг 1:

Допустим, у нас есть число 676, как преобразовать его в множитель 26? Мы по-прежнему делаем это так же, как и в двоичной системе, вместо деления на 2 и вычисления остатка мы делаем деление на 26 и вычисляем остаток.

676 фунтов стерлингов 26 фунтов стерлингов 100

Шаг 2:

Но у нас нет нуля в нашей базовой системе. Как убрать ноль?

  1. В десятичной системе счисления для обработки нуля мы заимствуем 10 и вычитаем 1 из следующего значащего числа.
  2. В системе с числом 26 для работы с нулем мы заимствуем 26 и вычитаем 1 из следующего значащего числа.

Таким образом, чтобы преобразовать 100 в 26 раз в 26 раз, но без нуля, мы получим число (25 26).

Символьное представление этого числа: YZ.

Вот пример кода для справки:

def printString(n): arr = (0) * 10000 i = 0 # Шаг 1: Преобразование в число # Предполагая 0 в системе счисления while (n > 0): arr(i) = n % 26 n = int(n / / 26) i += 1 #Шаг 2: Избавляемся от 0, так как 0 не является # частью системы счисления для j в диапазоне(0, i – 1): if (arr(j) 0): print(chr( ord(‘A’) + (arr(j) – 1)), end = “”); Распечатать(); # Код драйвера if __name__ == ‘__main__’: printString(26); строка печати (51); строка печати (52); строка печати (80); строка печати (676); строка печати (702); строка печати (705); # Этот код предоставлен Princi Singh

Возвращаемый результат:

Z AY AZ CB YZ ZZ AAC

Способ 3:

Мы можем использовать рекурсивную функцию, чтобы решить эту проблему быстрее и эффективнее.

Алфавиты упорядочены как «ABCDEFGHIJKLMNOPQRSTUVWXYZ», а обозначения столбцов Excel вы уже знаете выше.

Поэтому мы можем применить следующую логику, чтобы найти ответ.

В математических терминах (a,b) означает от a до b. (1,26) = (A,Z) интерпретируется как A, представляющий A, и Z, представляющий 26. При этом (27,52) будет равно (AA,AZ), а (57,78) будет равно (BA, BZ) .

Логика заключается в том, что мы будем добавлять алфавит в правильном порядке каждый раз, когда он заканчивается на 26.

Пример: если n равно 27, то мы просто делим на 26 и получаем остаток 1. Мы видим, что 1 — это A, и это можно сделать рекурсивно.

Конкретный алгоритм таков:

1. Возьмите массив и отсортируйте буквы от А до Я.

2. Если число n меньше или равно 26, просто получить соответствующую букву из массива и вернуть ее.

3. Если оно больше 26, используйте правило остаточного частного, если остаток равен 0, есть 2 возможных способа, если частное равно 1, просто хешируйте букву из индекса (r-1) ( r – остаток), в противном случае вызовите функцию из num = (q-1) и добавьте буквенный индекс (r-1).

4. Если остаток не равен нулю, вызовите функцию для num = (q) и добавьте буквенный индекс (r-1).

Вот пример кода для справки:

# Или вы можете просто взять строку и выполнить эту логику, я не нашел здесь проблем. alpha=”ABCDEFGHIJKLMNOPQRSTUVWXYZ” # здесь определена рекурсивная функция. # если число меньше “26”, просто хешируйте (индекс-1) # В возможностях есть дополнительные возможности, # 1. если остаток равен нулю (если частное равно 1 или не равно 1) и # 2. если остаток не равен ноль по определению num_hash(num): если num

Возвращаемый результат:

Z AY AZ CB YZ ZZ AAC

TipsMake.com надеется, что эта статья будет вам полезна.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *