Вопрос или проблема
У меня есть скрипт на Python, который позволяет мне получить индекс итерируемого объекта, используя комбинацию поиска. Мой итерируемый объект состоит из 110 символов, а я ищу с помощью строки длиной 40 символов.
Я просто хочу добавить заполнитель перед 55 символами (которая составляет 55 символов), поскольку я не знаю 55 символов перед 55 символами, которые я использую для поиска индекса.
Мой код:
def combination_to_index(combination, iterable):
=
#iterable2 = formula(iterable)
base = 110
index = 0
for char in combination:
#В full_string в '' поместите заполнитель для поиска
full_string = '' + iterable.index(char)
index = index * base + iterable.index(char)
return index
# Пример итерируемого объекта - '0123456789abcdefg'
iterable="0123456789abcdef"
# Определите целевую комбинацию - настройте по мере необходимости (в нижнем регистре и с префиксом '0x')
target_combination = ('GG'*55.lower())
# Рассчитайте индекс, сосредоточив внимание на последних 42 символах целевой комбинации
target_index = combination_to_index(target_combination, iterable)
print(f'Целевая комбинация: {target_combination}')
print(f"Индекс: {target_index}")
Как вы можете видеть, основание установлено на 110, так что каждая комбинация состоит из 110 символов. Я знаю только последние 55 символов и хочу использовать переменную full_string в функции combination_to_index, чтобы указать Python, что перед iterable.index(char) есть 55 символов, но я не знаю, что это.
Я хочу сгенерировать индекс, который в первую очередь имеет эту комбинацию.
Ответ или решение
Для решения вашей задачи по добавлению заполнителя (placeholder) к 64-символьной строке и дальнейшему поиску с использованием 40-символьной строки, необходимо немного изменить вашу функцию combination_to_index
. Основная идея заключается в создании "пустого" заполнителя для первых 55 символов, который будет учитываться при вычислении индекса.
Вот обновленная версия вашей функции:
def combination_to_index(combination, iterable):
base = 110
index = 0
placeholder = '0' * 55 # Задаем заполнитель из 55 нулевых символов
# Объединяем заполнитель и комбинацию
full_combination = placeholder + combination
for char in full_combination:
index = index * base + iterable.index(char)
return index
# Пример итератора - '0123456789abcdef'
iterable = "0123456789abcdef"
# Определяем целевую комбинацию - измените по мере необходимости
target_combination = ('G' * 40).lower() # Используем 40 символов для поиска
# Вычисляем индекс, сочетая заполнитель и целевую комбинацию
target_index = combination_to_index(target_combination, iterable)
print(f'Target combination: {target_combination}')
print(f"Index: {target_index}")
Объяснение изменений:
-
Заполнитель: Мы создаем переменную
placeholder
, которая содержит 55 нулей. Этот заполнитель будет добавлен к целевой комбинации. -
Объединение строк: В функции
combination_to_index
мы задаем переменнуюfull_combination
, которая представляет собой сочетание заполнителя и целевой комбинации. -
Индексирование: Проходим по каждому символу в
full_combination
и обновляем индекс, учитывая как заполнитель, так и целевую комбинацию.
Таким образом, теперь вы можете использовать свою целевую комбинацию (состоящую из 40 символов), и благодаря добавлению 55 символов-заполнителей, ваша функция корректно будет возвращать индекс поиска, как и требовалось.
Тестирование:
Запустите этот код, чтобы увидеть, как он работает, и убедитесь, что корректный индекс вычислен для заданной целевой комбинации. Вы можете изменять целевую комбинацию по своему усмотрению, чтобы тестировать различные сценарии.