2015-05-31 3 views
0

Для проекта, над которым я работаю, мне нужно преобразовать строку чисел в буквы, чтобы сформировать правильные слова. Например, мне нужно было бы преобразовать 2626 в BFBF, но как бы я удостоверился, что он не превратится в ZZ вместо или наоборот.Преобразование строки чисел в соответствующие буквы

Я очень смущен, потому что я не могу придумать, как это сделать, и мне нужна эта программа для преобразования чисел в их оригинальные буквы.

Любая помощь будет высоко ценится, так как я не совсем уверен, что делать больше ...

Спасибо Вам!

EDIT: Кажется, что это невозможно без использования списка чисел, поэтому теперь мне нужно найти способ заменить мои строки списками. Проблема в том, что я делаю шифровальный/дешифрующий криптографический ключ с открытым ключом, и я не знаю, как делать математику по числам, не будучи строкой. (Это не сработало бы для списка, например, если бы мне пришлось квадратировать число, 1212, я могу легко сделать это с 1212^2. Однако если список был [12,1,2], я не знаю, как на квадрат, чтобы получить тот же ответ, что и 1212^2.)

Любая помощь будет замечательной, спасибо снова!

+1

Используйте список, например [2, 6, 2, 6], в противном случае нет возможности надежно дифференцировать комбинацию цифр, таких как [26, 26] против [2, 6, 2, 6]. – Alexander

+0

После того, как вы используете список, используйте 'chr()' для преобразования. 'chr (65) = 'A'' и' chr (90) =' Z'' –

+0

Итак, нет способа сделать это с помощью целых чисел? Мой проект является открытым ключом, зашифрованным и дешифрованным, но на очень небольшом уровне. Во-первых, пользователь вводит свой секретный код. Затем я преобразую их код в числа, используя (a = 1, b = 2 и т. Д.), А затем поднимите его с модой и т. Д., А остальные шаги - на открытый ключ. Затем, с зашифрованным сообщением, код продолжает открытый ключ, чтобы отменить сообщение, и найти числовое представление букв, которое я сделал. Последний шаг - преобразование этих чисел в их исходные числа, которые я не могу узнать, как это сделать. – Flo

ответ

0

Использование chr() вы можете конвертировать int в письмо, например. print chr(97) отпечатки a. Если вы можете использовать некоторый символ для идентификации групп, возможно, «-», между цифрами, тогда это простая проблема. Если нет, вы столкнетесь с двусмысленными сопоставлениями, как вы упомянули.

Например, вы можете создать несколько буквенного словарь:

alphabet_dict = {} 
for abet in range(1, 27): 
    alphabet_dict[abet] = chr(96+abet) 

print alphabet_dict 

печатает:

{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'} 

Теперь, если мы решим, мы можем использовать символ разделитель, то мы можем использовать встроенные в split() для разбить нашу строку на список, а затем сопоставить эти значения (числа) в алфавит, используя словарь выше:

s = '2-6-2-6' 
def convert_num_to_alpha(num_string): 
    num_list = num_string.split('-') 
    abet_string = '' 
    for num in num_list: 
     abet_string = abet_string+alphabet_dict[int(num)] 
    return abet_string 

print convert_num_to_alpha(s) # prints: bfbf 
print convert_num_to_alpha('26-26') # prints: zz 

EDIT: Как преобразовать строку номера номера (например, «2-6-2-6») в целом:

Это хак, но если вам нужно сделать арифметику на номере, который я хранится в виде строки, вы можете сделать что-то вроде:

print int('2-6-2-6'.replace('-', '')) # prints: 2626 
+0

Я вижу, как это работает, но, как я уже сказал в своем последнем исправлении: (Это не сработало бы для списка, например, если бы мне пришлось квадратировать число, 1212, я легко могу сделать это с помощью 1212^2. Однако, если этот список был [12,1,2], я не знаю, как его квадратизировать, чтобы получить тот же ответ, что и 1212^2.) – Flo

+0

@Flo В моем примере используется только список в качестве промежуточного шага для управления каждым отдельным номером между '-'. В моем редактировании я показываю, как можно получить целое число из такой строки. – Scott

+0

@Flo вообще кажется, что такой подход (ваш шифр/расшифровка) может потребовать другого взгляда. Возможно, вы должны опубликовать в другом вопросе свою полную проблему, как вы сейчас приближаетесь к ней, перечислите подводные камни и как их исправить. Имейте в виду, не задавайте слишком много вопросов в одном посте и не просите совета. Укажите, что сломано и спросите, как это исправить. – Scott

Смежные вопросы