Так что я пытаюсь сделать шифр vigenere (или что-то подобное) для моей работы GCSE. Однако одна из проблем, с которыми я столкнулась, заключается в том, что мой индекс списка всегда выходит за пределы диапазона, но код, который у меня есть, точно такой же, как и раньше, и ошибок не было. Это мой код:Python повторный индекс индекса вне диапазона
#Encrypting
def encrypt():
#>Creating initial variables
plainText = str(input('Input your plain text \n --> ')).upper()
key = str(input('Input your key. Make sure it is as long as your plain text. \n --> ')).upper()
#>Looping key
if len(key) < len(plainText):
key = len(plainText)*key
else:
key = key
#>Creating lists for ASCII values of each letter
plainAscii=[ord(i) for i in plainText]
keyAscii=[ord(k) for k in key]
#>Shortening the keyAscii list
while len(keyAscii) != len(plainAscii):
keyAscii.pop(len(keyAscii) - 1)
#>Adding the values together and putting them into a new list
cipherAscii=[]
x = 0
while x < len(key):
item = (plainAscii[x] + keyAscii[x]) - 75
cipherAscii.append(item)
x = x + 1
#>Making sure all numbers are within the 65 - 90 window
newCipher=[]
for c in cipherAscii:
if c > 90:
c = c - 26
newCipher.append(c)
elif c < 65:
c = c + 26
newCipher.append(c)
else:
newCipher.append(c)
#>Converting the ASCII back into regular letters
cipherText=[chr(i) for i in newCipher]
#>Printing the cipher text
for i in cipherText:
print (i, end="")
Является ли мой код неправильным? Пожалуйста, помогите в ближайшее время, так как у меня мало времени.
Было бы полезно, чтобы сообщить нам строку, где проблема происходит – flakes
Было бы полезно, если вы при условии полной ошибки Traceback и указал точно, в какой строке соответствует последний номер строки. Кроме того, укажите пример ввода, фактический вывод и ожидаемый результат. –
Что означает 'key = len (plainText) * key'?Если вы хотите обрезать ключ до длины обычного текста, используйте клавишу «key» [: len (plaintext)] ' –