Базовый Python Vigenere Cypher - PullRequest
       5

Базовый Python Vigenere Cypher

0 голосов
/ 27 октября 2018

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

Когда я запускаю проблему, я просто получаю несколько символов S в качестве результата, потому что код не идет к следующей букве ключевого слова.

Мне нужна помощь в части Def Encrypt (второе определение)

Ключевое слово SECRET // Это ввод

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)

1 Ответ

0 голосов
/ 27 октября 2018

Поскольку это, очевидно, набор задач для студентов, поработайте над ним немного дольше и вернитесь, чтобы задать конкретный вопрос, но несколько советов:

  1. Инициализируйте счетчик, чтобы подсчитать, сколько букв .isalpha() вы встретили
  2. Используйте counter % len(secret_code) для отслеживания вашей текущей позиции в секретном коде
  3. Используйте целочисленную арифметику ASCII и некоторую логику if/else для изменения символов в cypher_text на counter % len(secret_code)
  4. ord() и chr() помогут вам

Если вы действительно застряли и вам нужно посмотреть на решение, мое здесь: https://github.com/bennett39/learning-exercises/blob/master/cs50/pset6/vigenere/vigenere.py

Потратьте еще немного времени на решение, прежде чем перейти по этой ссылке.

...