我是python 2.7的新手,尝试创建一个简单的程序,它从用户那里获取一个输入字符串,将所有字符转换为其ascii值,将2添加到所有ascii值,然后将新值转换为文本。例如,如果用户输入是“test”,那么输出应该是“vguv”。
这是我到目前为止写的代码:
message = input("enter message to encode")
for ch in message:
message2 = ord(ch) + 2
print "\n\n"
encodedmessage = ""
for item in message2.split():
encodedmessage += chr(int(item))
print ("encoded msg in text : "), encodedmessage
它似乎不能正常工作,任何帮助都将不胜感激。谢谢。
你把字符和字符串混在一起了。当你循环遍历一个字符串(比如“消息”)时,每次迭代都会得到一个字符。同时,ord(ch)是一个整数,一个数字,所以不能“拆分”它。
另外,不要使用“输入”,而是使用“原始输入”。
你想要的可能是类似的东西:
这里您还没有新的消息,因为循环一次给您一个字符,所以我将变量重命名为“encoded\u ord”,这样可以更好地描述它的内容。
现在,您可以将此“encoded ord”转换为编码字符,并将其添加到编码消息中:
你想做一个
rot-13
(或广义的“rot-x
”)类型函数吗?跑步:
如果在ASCII字符中添加2个字符,
}
将变为不可打印,~
将变为取决于字符编码的内容message2 = ord(ch) + 2
使message2
成为一个整数,因此您当然不能在它上调用split
——它是一个表示单个字符的单个int,为什么要将它拆分?!另外,每次循环都要将encodedmessage
重置为空字符串,因此一旦修复了split
的奇怪之处(只需删除它!)当然,您只会看到最后一个字符;将encodedmessage = ''
移到循环之前的。相关问题 更多 >
编程相关推荐