1

I am able to encode the message using the ASCII table but unfortunately I am unable to decode the message. After the user the gets the result he/she will type either yes or no to redo the message to the original input. Thanks!

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()
mbomb007
  • 3,788
  • 3
  • 39
  • 68

1 Answers1

2

You should store the encoded message after the user provides it and you encode it with ord:

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

The next problematic line is this:

plainText = plainText + chr(message)

This tries to decode the entire message with chr on every iteration. It causes an error message:

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

Instead of chr(message) it should be chr(ch), so it decodes each character separately. You can also do it more efficiently with "".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()

Also note that variable names should be snake case in Python

Sebastian Wozny
  • 16,943
  • 7
  • 52
  • 69