1

我可以使用 ASCII 表对消息进行编码,但不幸的是我无法对消息进行解码。在用户获得结果后,他/她将键入是或否以将消息重做到原始输入。谢谢!

def main():

    message = input("Please input the message you want to encode: ")
    for ch in message:
        print(ord(ch))

    print()

    decode = input("Would you like to decode it? (Yes or No?): ")
    if decode == str('yes', 'Yes'):
        plainText = ""
        for ch in message:
            numCode = eval(decode)
            plainText = plainText + chr(message)
        print("Your decoded message is: ", plainText)


    else:
        print("Thank you for encrypting with us today!")



main()
4

1 回答 1

2

您应该在用户提供后存储编码的消息,并使用以下代码对其进行编码ord

message = input("Please input the message you want to encode: ")
encoded = "".join([ord(ch) for ch in message])

下一个有问题的行是:

plainText = plainText + chr(message)

这会尝试chr在每次迭代时解码整个消息。它会导致错误消息:

>>> chr("abc")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required

而不是chr(message)应该是chr(ch),所以它分别解码每个字符。您还可以通过以下方式更有效地做到这一点"".join()

def main():

    message = input("Please input the message you want to encode: ")
    for ch in message:
        print(ord(ch))

    print()

    decode = input("Would you like to decode it? (Yes or No?): ")
    if decode == str('yes', 'Yes'):
        plain_text = "".join([chr(ch) for ch in encoded])
        print("Your decoded message is: ", plain_text)
    else:
        print("Thank you for encrypting with us today!")



main()

另请注意,变量名在 Python 中应为蛇形大小写

于 2016-03-23T19:15:17.883 回答