如何使此程序与空间一起使用? (文本为ASCII,ASCII为文本)

时间:2017-01-26 20:25:18

标签: python

我编写了一个程序,将文本转换为ASCII数字,然后将ASCII数字转换回原始文本。现在它适用于小写字母和大写字母,但它不适用于空格。这就是我的代码现在的样子:

message_hidden = input("Enter a message that will be hidden: ")
hidden = ""
norm_message = ""
for i in message_hidden:
    hidden = hidden + str(ord(i)-23)
print(hidden)

for i in range(0, len(hidden), 2):
    code = hidden[i] + hidden[i+1]
    norm_message = norm_message + (chr(int(code)+23))
print("The first message was: ", norm_message)

我的第一次尝试是重写第一个循环:

for i in message_hidden:
    if i.isalpha():
        hidden = hidden + str(ord(i)-23)
    else:
        hidden = hidden + i
print(hidden)

从这里开始,我不知道应该如何编写第二个循环来使其工作。谁能给我一些关于如何离开这里的建议呢?

1 个答案:

答案 0 :(得分:1)

ord(' ') == 3232-23 == 9,这是一位数。您假设您的数字代码都是2位数。如果要保留该假设,则需要找到一种不同的方法来加密空格字符。为此,请找到一个2位数字,不是 a-zA-Z获得的数字之一。使用显式if - 将空格字符加密到此数字。解密时,您还需要使用显式if来处理这种情况。

或者,找一个适用于ord(letter)的不同功能(减去23的其他功能) - 一个为您感兴趣的所有ord()值提供2位数字的功能。无限多的功能,满足这个属性。另外一个问题是,你是否可以找到一个只需要更少代码而不仅仅是在空间角色上设置乐队助手的代码。