首页 > 解决方案 > 如何将多个数字转换为单个字母以从书中创建短语

问题描述

我被赋予了解码数字列表的任务。原始文本被逐个字母地转换成它的 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 = -4b = -63。之后的每个整数都是一个加密的字母。

要弄清楚 -355 等于你必须 -> (355 - 63) / 4 = 73 73 在 ASCII 表中是“I”

现在我只需要找出一个代码,它将获取上面所有的数字,并让它逐个字母地吐出,直到形成一个段落。

请帮我

标签: pythonnumbersascii

解决方案


尝试这个:

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]

推荐阅读