Это из-за двух выражений if и else внутри друг друга?Цезарь Cypher Программа: Индекс строки за пределами диапазона
Я работаю над программой Cesar Cipher для класса. Я получаю сообщение об ошибке:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
main()
File "C:\Users\Chandler\Desktop\CSCI220-S16-Assign2-CaesarEncode-CTL.py", line 31, in main
print("You coded message is: ", (code(message)))
File "C:\Users\Chandler\Desktop\CSCI220-S16-Assign2-CaesarEncode-CTL.py", line 25, in code
textInput += alphabet[letterPos]
IndexError: string index out of range
Просто примечание стороны я также буду создать другой раздел цикла этой программы разворачивать текст обратно к первоначальному входу
def main():
alphabet = "abcdefghijklmnopqrstuvwxyz"
message = input("Enter the message you wish to be encoded: ")
message = message.lower()
key = eval(input("Enter the key shift: "))
def code(message):
textInput = ""
for ch in message:
if ch in alphabet:
letterPos = alphabet.find(ch) + key
if letterPos > 26:
letterPos % key
else:
letterPos + key
textInput += alphabet[letterPos]
else:
cyphertext += ch
return textInput
print("You coded message is: ", (code(message)))
#end main
main()
Блок if неправильный. Вы не назначаете результаты, и операция неверна. – purpletentacle
Вы хотите использовать '(букву + ключ)% 26' для выполнения сдвига и нанести его на алфавит. –
Это, безусловно, школьное упражнение. Я не уверен, должны ли мы давать прямые ответы. – purpletentacle