Расшифровка числа в слова - PullRequest
0 голосов
/ 08 февраля 2020

Учитывая следующий код:

list = [1, 0 ,3]

def decrypt(text, alphabet):
    decrypt_final = ""

    for j in alphabet:
        aindex = alphabet.index(j)
        for i in list:
            if aindex == i:
                decrypt_final = decrypt_final + str(j)

    print(decrypt_final)

decrypt("103", "abcde")

Когда код запущен, результат будет "abd", что не то, что я хочу. Я пытаюсь расшифровать число 103 на основе алфавитного диапазона "abcde", и правильный результат должен быть "bad", если введено значение "103".

То, что мой код выше пытался сделать, это просмотреть список (числа в списке взяты из другой функции, которую я не включил, чтобы упростить это), и если номер списка совпадает с индексом алфавит, чтобы вывести алфавит. К сожалению, порядок вывода неправильный.

Буду признателен за некоторые рекомендации.

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Вы можете попробовать это.

Вы можете извлечь желаемое путем индексации. Все, что вам нужно сделать, это преобразовать строку 103 в целые числа. Номер строки можно преобразовать в целое число, выполнив int(str_num). Теперь, когда это целые числа, они являются индексами строки алфавитов, которые вы хотите извлечь. Все вышеперечисленные шаги можно сжать в приведенный ниже код.

'delimiter'.join(iterable) объединить все элементы итерируемого с разделителем.

def decrypt(txt,alphabets):
      cipher_text=[alphabets[int(i)] for i in txt]
      return ''.join(cipher_text)

decrypt('103','abcde')
#'bad'
1 голос
/ 08 февраля 2020

Я полагаю, что следующее должно работать

def decrypt(text, alphabet):
    decrypt_final = ""
    # convert text to list of indices
    str_to_int = [int(i) for i in text]
    for j in str_to_int:
        decrypt_final += alphabet[j]

    print(decrypt_final)

decrypt("103", "abcde")

Вы просто конвертируете текст ("103") в список индексов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...