python - 如何将多个数字转换为单个字母以从书中创建短语
问题描述
我被赋予了解码数字列表的任务。原始文本被逐个字母地转换成它的 ASCII 数字等价物。例如“T”→ 84。这些数值中的每一个都是通过驱动它们通过这个过程来加密的:加密值 = a X(原始值)+ b。文件中的前两个整数是 a 和 b 值;其余整数表示加密文本。
例如,您的加密可能如下所示:
-4, -63, -355, -191, -479, -507, -511, -467, -191, -547, -507, -531, -191, -479, -451, -535, -467, -191, -475, -507, -507, -463, -191, -539, -467, -451, -527, -479, -467, -519, -191, -539, -479, -483, -495, -467, -191, -355, -191, -451, -499, -191, -475, -507, -503, -467, -247
因此,a = -4
和b = -63
。之后的每个整数都是一个加密的字母。
要弄清楚 -355 等于你必须 -> (355 - 63) / 4 = 73 73 在 ASCII 表中是“I”
现在我只需要找出一个代码,它将获取上面所有的数字,并让它逐个字母地吐出,直到形成一个段落。
请帮我
解决方案
尝试这个:
lst = [4, 63, 355, 191, 479, 507, 511, 467, 191, 547, 507, 531, 191, 479, 451, 535, 467, 191, 475, 507, 507, 463, 191, 539, 467, 451, 527, 479, 467, 519, 191, 539, 479, 483, 495, 467, 191, 355, 191, 451, 499, 191, 475, 507, 503, 467, 247]
a, b = lst[:2]
ans = ''.join([chr((abs(val) - b)//a) for val in lst[2:]])
print(ans)
输出:
I hope you have good weather while I am gone.
加密:
enc = [(a * ord(char)) + b for char in ans]
#[355, 191, 479, 507, 511, 467, 191, 547, 507, 531, 191, 479, 451, 535, 467, 191, 475, 507, 507, 463, 191, 539, 467, 451, 527, 479, 467, 519, 191, 539, 479, 483, 495, 467, 191, 355, 191, 451, 499, 191, 475, 507, 503, 467, 247]
推荐阅读
- assembly - MIPS:中点圆算法
- swift - 在 Swift 中保存 UIImageView?
- php - MySQL NOT IN 函数的数据数组
- angular - 如何检测 Angular 中的死代码或未使用代码?
- reactjs - 如何在特定页面中打开特定模式并使用 url 做出反应?
- python - Pytorch Chatbot 教程问题:如何解决 List Index Out of Range
- macros - 为什么定义值没有绑定在带有#lang racket/base 的 Racket 宏中?
- postgresql - 选择列并在 jsonb 列中仅返回满足条件的最后一个元素
- html - 行和列之间的网格间隙不一致
- r - 矩阵中的区间数