我试图使其不被空格加密为空白框,因为空白框不会在每个消息传递应用程序中转换。
我尝试在第一个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 = ''
我目前遇到一个类型错误的问题,但是我对此感到困惑。它应该生成带有空格而不是正方形的加密版本。
正方形也未显示在这里,因此我将图片作为参考:
当前错误代码:result [i] = result [i] .replace('','') TypeError:“ str”对象不支持项目分配
复制的样本:
Hello World 加密:FcjjmUmpjb
答案 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')