首页 > 解决方案 > 基本 Python Vigenere 密码

问题描述

我有基本的代码布局问题是我不知道如何正确使用关键字的长度。

当我运行问题时,我只得到一堆 S 作为我的输出,因为代码不会转到关键字的下一个字母。

我需要 Def Encrypt 部分的帮助(第二个 def)

关键字是 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)

标签: python-3.xvigenere

解决方案


由于这显然是一个学生问题集,因此请稍等片刻,然后再回来问一个特定的问题,但有一些提示:

  1. .isalpha()初始化一个计数器来计算你遇到了多少个字母
  2. 用于counter % len(secret_code)跟踪您在密码中的当前位置
  3. 使用 ASCII 整数算术和一些if/else逻辑来修改cypher_textbycounter % len(secret_code)
  4. ord()并且chr()会帮助你

如果您真的遇到困难并需要查看解决方案,我的就在这里:https ://github.com/bennett39/learning-exercises/blob/master/cs50/pset6/vigenere/vigenere.py

不过,在单击该链接之前,请多花一点时间在您的解决方案上。


推荐阅读