更改列表中的ASCII值

时间:2014-09-14 03:43:58

标签: python

我正在努力选择" HELLO WORLD"并使用ord()将其转换为ASCII。 使用此代码:

word="HELLO WORLD"
word2=[ord(c) for c in word]
print(word2)

word2的输出为[72, 69, 76, 76, 79, 32, 87, 79, 82, 76, 68]这很好,但我无法弄清楚如何更新每个值。我希望能够将每个值更改为某个整数,例如3。在三个情况下,我想要的输出是[75, 72, 79, 79, 82, 32, 90, 82, 85, 79, 71],这是" JHOOR ZRUOG"但我似乎无法弄清楚如何正确更新列表。有什么建议?我对python还很陌生。

2 个答案:

答案 0 :(得分:0)

你非常接近自己发现解决方案 - 你只需要再次使用列表推导,但略有不同

word="HELLO WORLD"
word2=[ord(c) for c in word]
print(word2)

shifted_by_3 = [num + 3 for num in word2]
print(shifted_by_3)

word3 = [chr(num) for num in shifted_by_3]
print word3

这将使你非常接近你想要的东西 - 你将打印出移位号码列表,然后列出他们的ASCII等价物。之后,你可能想要研究使用模数或其他东西,这样如果你将一个字母移到字母“Z”之外,你就把它包回到字母表的开头。

要再次将word3合并到字符串中,您可以使用str.join

print(''.join(word3))

这将包含word3中的所有内容,并将它们组合成一个字符串,将列表中的每个元素分隔为'' - 空字符串。尝试使用此功能 - 它非常有用。例如,如果您执行以下操作会发生什么?

print('--'.join(word3))

答案 1 :(得分:0)

在您的代码中,行

word2=[ord(c) for c in word]

遍历单词中的每个字母,并通过使用ord(c)

将它们转换为整数值来创建新列表

由于您要做的只是将整数值递增一个常数(例如,3),您可以通过以这种方式修改行来实现:

word2=[ord(c)+3 for c in word]