codeword = input('Enter codeword : ')
codeword = codeword.lower().replace(" ", "")
for i in codeword:
old = (Chr(ord(i)))
encrypt = input('Enter text to encrypt : ')
encrypt = encrypt.lower().replace(" ", "")
for i in encrypt:
new = (Chr(ord(i)))
value = new + old
for i in value:
print(Chr(ord(i)))
Я занимаюсь шифрованием и дешифрованием для своих вычислений GCSE, я уже сделал программу, которая успешно шифрует текст до значения 5 букв в алфавите («а» станет «f») алфавита, а затем программу, которая его расшифровывает. Однако мне также нужно написать программу, которая добавляет в текст значения кодового слова и печатает новую букву. Так, например, если кодовое слово было «gcses», а текст «привет», он напечатал бы o (7 + 8) h (3 + 5) e (19 + 12) q (5 + 12) h (19 + 15). )
Я считаю, что код, который у меня есть на данный момент, смутно находится на правильном пути, однако я хотел бы знать, можно ли добавить значения двух функций ord() для выполнения этой программы. Спасибо. Любая помощь приветствуется.
ord()
, но это будет довольно сложно, потому чтоord('a')
не равно 0, и поэтому вы не можете использовать% 26
, не вычитая сначалаord('a')
. Пример:(ord('b') + ord('f') - ord('a')) % 26 + ord('a')
примерно то, через что нужно пройти одной букве. - person zondo   schedule 15.02.2016string.lowercase
иstring.uppercase
. Например,string.lowercase[string.lowercase.index('b) + string.lowercase.index('f') % 26]
даст те же результаты, что и пример, который я привел выше. Вам нужно будет проверить, находятся ли ваши две буквы вstring.lowercase
илиstring.uppercase
, но примерно так я это и сделал. Вы также можете использоватьstring.letters
, который имеет строчные и прописные буквы прямо в строке. Для этого, еслиstring.letters.index(letter)
составляет ›= 26, это в верхнем регистре. В противном случае это нижний регистр. - person zondo   schedule 15.02.2016