У меня есть вопрос об этом ниже код:Python упражнения Vigenere код
ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def main():
encrypt_code = codeer('NOBODY EXPECTS THE SPANISH INQUISITION!', 'CIRCUS')
print("{}".format(encrypt_code))
print("{}".format(decrypt('CIRCUS', encrypt_code)))
def codeer(tekst, sleutel):
pairs = zip(tekst, cycle(sleutel))
code = ""
for pair in pairs:
total = reduce(lambda x, y: ALPHA.index(x) + ALPHA.index(y), pair)
code += ALPHA[total % 26]
return code;
Этот код будет врезаться, потому что сообщение содержит пробелы и а! знак.
total = reduce(lambda x, y: ALPHA.index(x) + ALPHA.index(y), pair) ValueError: substring not found
Может кто-нибудь помочь мне с моей проблемой
Ниже приведен пример ожидаемого результата:
codeer('NOBODY EXPECTS THE SPANISH INQUISITION!', 'CIRCUS')
'PWSQXQ MORYUVA VBW AGCHAUP KHIWQJKNAQV!'
decodeer('PWSQXQ MORYUVA VBW AGCHAUP KHIWQJKNAQV!', 'CIRCUS')
'NOBODY EXPECTS THE SPANISH INQUISITION!'
использовать ['find()'] (https://docs.python.org/2/library/string.html#string.find), чтобы избежать ошибки? (хотя это даст неверные результаты, я думаю) – UnholySheep
Вы должны объяснить, каков ожидаемый результат и поведение - например: что должно произойти с символами пробелов и восклицательных знаков? – UnholySheep
Здравствуйте, я в настоящее время использую find, чтобы видеть в символе в алфавите, однако я получаю следующее исключение: TypeError: не все аргументы, преобразованные во время форматирования строки – Michael