python - 如何缩短我体内解释的程序?
问题描述
我正在制作一个用于加密消息的简单 python 项目。在我分享我想在这里缩短的内容之前,是我用于解密消息的代码的链接(我需要帮助): https ://www.sendspace.com/file/jji74r
我的问题是我不知道如何在没有 25 行代码的情况下阅读消息,这个程序测试 25 个字符的加密消息,所以如果我想测试 30 个字符的加密文本,我需要多 5 行代码。有什么方法可以减小我的程序任何部分的大小吗?
解决方案
你可以用一些嵌套循环来做到这一点 -
INCREMENT = 3
ALPHABET = "abcdefghijklmnopqrstuvwxyz"
BEM_LENGTH = 25
#data needed from user to decrypt a message encrypted via BEM
BEM = input("Please input your BEM key: ")
message = input("please input the message you wish to decrypt (up to 26 characters): ")
# processing
for i in range(0, len(message)//INCREMENT):
mess = message[(i*INCREMENT):(i+1)*INCREMENT]
for j in range(0, BEM_LENGTH):
bem = BEM[(j*INCREMENT):(j+1)*INCREMENT]
if mess == bem:
print(ALPHABET[j], end="")
print()
我注意到值的变化始终是 3,所以我将 INCREMENT 设置为 3。我还需要字母表。我输入了一个 BEM_LENGTH 常量,以便您可以轻松更改它。
在那之后,我得到了输入。
然后,我遍历消息,增量为 3,就像您硬编码的那样。然后,我遍历 BEM 键并对其进行比较,类似于您的 if 语句。然后,如果它们匹配,我打印字母表的正确字符。如果您需要更多帮助,如果您需要帮助,我可以给您发送电子邮件或在 discord 上聊天!
使用列表理解,我可以在大约 4 行内完成此操作,但阅读起来会非常困难。这是最易读、最干净的方式。
推荐阅读
- php - php分组重复数组值
- diameter-protocol - 当接收到 Diameter 协议消息时,是否会生成响应并将其发送回发送者?
- html - SQL 和 SSRS - 删除字符串中的所有 HTML 标记并搜索纯文本
- python - 分析以下代码的时间和空间复杂度
- c# - 从 EAN-13 条码计算 GTIN 的库
- python - 查询失败 - 传递日期时间时 [收到不兼容的日期时间]?
- automation - 无处不在的自动化
- php - 不在php页面中显示员工姓名和日期
- python - Fuzzy Match columns of Different Dataframe
- javascript - Angular 5 应用无法在 Microsoft Edge 40 中运行