无法用空格替换空白框

时间:2019-07-02 19:35:31

标签: python

我试图使其不被空格加密为空白框,因为空白框不会在每个消息传递应用程序中转换。

我尝试在第一个for循环中执行if语句,而我目前的尝试是将其放入自己的for循环中。

    if choice == '1':
        message = input('\nEnter message for encryption: \n')
        for i in range(0, len(message)):
            result = result + chr(ord(message[i]) - 2)

        for i in range(0, len(result)):
            if result[i] == '':
                result[i] = result[i].replace('', ' ')
        print(result + '\n\n')
        result = ''

我目前遇到一个类型错误的问题,但是我对此感到困惑。它应该生成带有空格而不是正方形的加密版本。

正方形也未显示在这里,因此我将图片作为参考: empty square boxes

当前错误代码:result [i] = result [i] .replace('','') TypeError:“ str”对象不支持项目分配

复制的样本:

Hello World 加密:FcjjmUmpjb Hello World with empty boxes

1 个答案:

答案 0 :(得分:2)

听起来就像您试图创建一个凯撒密码,将每个字符向后移动两个,但您希望空格保持不变。这是有道理的,因为远离空间的两个字符是控制字符,甚至不能在很多平台上渲染。

您的第二个循环试图通过用空格替换chr(30)来重新分配result中的字符。但是,如果result是字符串,则将无法正常工作,因为字符串是不可变的,并且对字符串进行索引分配是不合法的。相反,请尝试仅对整个字符串进行一次replace调用。

result = ""
message = "Hello world"
for i in range(0, len(message)):
    result = result + chr(ord(message[i]) - 2)

result = result.replace(chr(30), " ")
print(result + '\n\n')

结果:

Fcjjm umpjb

或者,不要调用replace,只是如果字符是空格,不要打扰换头。

result = ""
message = "Hello world"
for i in range(0, len(message)):
    if message[i] == " ":
        result = result + " "
    else:
        result = result + chr(ord(message[i]) - 2)

print(result + '\n\n')