Aug-16-2020, 02:39 PM
I'm trying to make a basic shift, my code is as follows:
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',] def shift(): message = input("Please enter a message:") number = int(input('Please enter the number that you would like to shift by (1-26):')) new_message = "" for letter in message: letter = letter.lower() if letter.isalpha(): new_position = alphabet.index(letter) + number if new_position > 26: new_position = new_position - 27 new_letter = alphabet[new_position] elif letter.isnumeric(): letter = letter print(letter) elif letter == " " or letter == "," or letter == "." or letter == ";" or letter == ":": letter = letter print(letter) else: print("Error in message please try a different message") print(new_message) print() def decode(): message = input("Please enter a message to decode:") number = int(input('Please enter the number shift key (between 1 and 26):')) new_message = "" for letter in message: letter = letter.lower() #y = alphabet.index(x) #y = y + number if letter.isalpha(): new_position = alphabet.index(letter) - number if new_position < 0: new_position = new_position + 27 new_letter = alphabet[new_position] new_message = new_message + new_letter elif letter.isnumeric(): letter = letter print(letter) elif letter == " " or letter == "," or letter == "." or letter == ";" or letter == ":": letter = letter print(letter) else: print("Error in message please try a different message") print(new_message) print() def main(): repeat = True while repeat == True: print("1) Make a code") print("2) Decode a message") print("3) Quit") print() choice = int(input("Enter your selection:")) if choice == 1: shift() elif choice == 2: decode() elif choice == 3: repeat = False else: print("Incorrect choice, please try again") choice = int(input("Enter your selection:")) main()However I get the following error:
Error: File "c:/Users/djwil/Documents/python/learning python/Chapter 19 - Chunky Challenges/Shift Code.py", line 70, in <module>
main()
File "c:/Users/djwil/Documents/python/learning python/Chapter 19 - Chunky Challenges/Shift Code.py", line 63, in main
decode()
File "c:/Users/djwil/Documents/python/learning python/Chapter 19 - Chunky Challenges/Shift Code.py", line 38, in decode
new_letter = alphabet[new_position]
IndexError: list index out of range
However I thought that the lines of code:if new_position < 0: new_position = new_position + 27and:
if new_position > 26: new_position = new_position - 27should be preventing this from happening. Can anyone help?