So when I encode "hello" in my Encode() function, with a shift of three I get the result "khoor". When I attempt to decode "khoor" using my decode function with a shift of three, I get "hellor". This is strange because an extra letter "r" is returned, despite only decoding 5 letters. This happens with every string I attempt to decode, and I have noticed that the last letter of every string to be encoded is added as an additional letter to the decoded string.
ALPHABET = 'abcdefghijklmnopqrstuvwxyz'
def Menu():
    print("Please choose from the following: \n")
    print("'e' to encode a string.")
    print("'d' to decode a string.")
    print("'q' to quit.\n")
    choice = input("Please enter one of the letters above.\n")
    if choice == "e":
        print (Encode())
    if choice == "d":
        print (Decode())
    if choice == "q":
        print("The program will now exit.")
        quit()
def stringValidation():
    while True:
        try:
            valid = str(input("Enter a string to encode.\n"))
            return valid
            break
        except:
            print("Value Error. Enter a string with only letters from the alphabet.")
            continue
def shiftValidation():
    while True:
        try:
            valid = int(input("Enter the number of shifts you would like.\n"))
            return valid
            break
        except:
            print("Value Error. Please enter an integer.")
def decodeShiftValidation():
    while True:
        try:
            valid = int(input("Enter the key. (Number of shifts used to encrypt the encoded word.)\n"))
            return valid
            break
        except:
            print("Value Error. Please enter an integer.")
def Encode():
    data = []
    string = stringValidation() # asks the user for the string input to be encoded
    shift = shiftValidation() # asks the user for the number of shifts
    for i in string:        # for the letters in string...
        if i.strip() and i in ALPHABET: # i.strip removes all default whitespace characters from i (string input by user.)
            data.append(ALPHABET[(ALPHABET.index(i) + shift) % 26]) # gets position of the letters from input string in ALPHABET using indexing, and adds the shift to get the new position and new letter.
        else:
            data.append(i) # if it is a space, simply append it to the data.
    output = ''.join(data)
    return output
    encoded_string= Encode()
    print(encoded_string)
def Decode():
    data = []
    string = input("Please enter the string you wish to decode.\n")
    shift = int(input("Enter the key. (Number of shifts used when encoding original word. \n"))
    for i in string:
        if i.strip() and i in ALPHABET:
            data.append(ALPHABET[(ALPHABET.index(i) - shift) % 26])
    else:
        data.append(i)
    output = ''.join(data)
    return output
Menu()
 
     
    