我正在努力选择" 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还很陌生。
答案 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]