python - 如果for循环中的数字小于97,则加26
问题描述
我正在尝试制作凯撒密码。我目前有当前代码:
import string
def code_to_encrypt():
print("This program will encode your messages using a Caesar Cipher")
print("")
key = -3
message = input("Enter the message: ")
for letter in message:
if ord(letter) > 96:
print(chr(ord(letter) + key))
code_to_encrypt()
我怎样才能使字母随键的数量而变化?例如,如果数字为 96,则应更改为 122。
解决方案
我会使用一个单独的函数来执行移位
def shift(letter, num):
return chr(((ord(letter.upper()) - 65 + num) % 26) + 65)
例如letter = shift('a', 3)
您还需要转换正 3 而不是负 3(使用负数进行解密)
def caesar_encrypt(text):
result = ''
for letter in text:
result += shift(letter, 3)
return result
def caesar_decrypt(text):
result = ''
for letter in text:
result += shift(letter, -3)
return result
输出
caesar_encrypt("plaintext")
'SODLQWHAW'
caesar_decrypt("SODLQWHAW")
'PLAINTEXT'
推荐阅读
- c# - 来自 Angular 前端的 WebApi2 跨域请求被阻止
- discord.js - discord.js 保存附件“未定义”?
- sql - [Microsoft][ODBC Driver Manager] 无法建立与 SQL 服务器的连接
- google-cloud-dataflow - 如何使用 Beam SQL 执行查找
- pug - 是否有停止处理和退出命令?
- ngrx-effects - ngrx 效果中的错误处理
- javascript - Express.js 应用程序在本地运行良好,但在 Heroku 上部署时无法运行
- linux - 评估变量 - 输出 json 文件内容
- php - 将mysql查询的结果用于新查询
- excel - Excel:如何通过两列查找返回唯一列表数组