Aug-16-2020, 02:39 PM
(This post was last modified: Aug-16-2020, 02:39 PM by djwilson0495.)
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 rangeHowever 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?
