简单消息解码器
我做了一个简单的消息编码器和解码器。编码器的工作原理是把每个字母的值减去3。比如说:A会变成D,B会变成E。解码器则是做相反的操作。
我想知道有没有办法像我写编码器那样,用更少的代码来写解码器?
我试过这样做(我把代码放进来了),但是不管用。
有什么建议吗?
import string
shift = 3 # a shift of 3 letters. for example: A would become D, B would become E...
# encoding message
encode = raw_input("Enter message to encode: ")
print "The encoded message is:",
for i in encode:
print int(ord(i))-shift, # convert characters to numbers
print
print
#decoding message
decode = raw_input("Enter message to decode: ")
message = ""
for numStr in string.split(decode):
asciiNum = eval(numStr) # convert digits to a number
message = message + chr(asciiNum+shift) # append character to message and add shift
print "The decoded message is:", message
"""
#decoding message
decode = raw_input("Enter message to decode: ")
decode = int(decode)
print chr(decode+shift) # only works for one number
# doesn't work
for i in range(decode):
print chr(decode+shift),
"""
1 个回答
0
你可以使用列表推导式或者生成器表达式来让代码变得更简洁。
>>> message = 'HelloWorld'
>>> encoded = ''.join(chr(ord(letter) - 3) for letter in message)
>>> decoded = ''.join(chr(ord(letter) + 3) for letter in encoded)