У меня есть базовый код, проблема в том, что я не знаю, как правильно использовать длину ключевого слова.
Когда я запускаю задачу, я просто получаю кучу S в качестве вывода, потому что код не переходит к следующей букве ключевого слова.
Мне нужна помощь в части Def Encrypt (вторая def)
Ключевое слово СЕКРЕТНО // Это ввод
def encrypt_letter(text_letter , code_letter):
alphabet = string.ascii_uppercase
index = alphabet.find(code_letter)
cypher = alphabet[index:]+alphabet[:index]
index2 = alphabet.find(text_letter.upper())
result = cypher[index2]
if text_letter.islower():
result = result.lower()
return result
def encrypt(text, code):
cypher_text = ''
for letter in text:
if letter.isalpha():
cypher_text += code_word[0:1:6]
# code_letter = ?
# encrypt_letter(letter, )
else:
cypher_text += letter
return cypher_text
code_word = input('Please enter the code word: ')
code_word = code_word.upper()
cypher_text = encrypt(plain_text, code_word)
print(cypher_text)
Поскольку это явно задача студента, поработайте над ней еще немного и вернитесь, чтобы задать конкретный вопрос, но несколько советов:
.isalpha()
вы встретилиcounter % len(secret_code)
, чтобы отслеживать свое текущее положение в секретном коде.if/else
для изменения символов в cypher_text
с помощью counter % len(secret_code)
ord()
и chr()
вам помогутЕсли вы действительно застряли и хотите найти решение, мое здесь: https://github.com/bennett39/learning-exercises/blob/master/cs50/pset6/vigenere/vigenere.py
Тем не менее, потратьте немного больше времени на свое решение, прежде чем переходить по этой ссылке.