-1

簡単なメッセージエンコーダーとデコーダーを作成しました。エンコーダーは各文字の値を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),
"""
4

1 に答える 1

0

リスト内包表記またはジェネレータ式を使用して、コードをはるかに短くすることができます。

>>> message = 'HelloWorld'
>>> encoded = ''.join(chr(ord(letter) - 3) for letter in message)
>>> decoded = ''.join(chr(ord(letter) + 3) for letter in encoded)
于 2013-03-22T18:43:10.353 に答える