Ошибка: string index out of range, почему индекс выпадает?
text = '~qFmobwfpfhe`pin5unugkaqfyGhfcYf|chtugenbrtchtwl'
def mix(text):
string = text[::2]
for x in range(len(string)):
string = "".join(chr(ord(string[x])-1))
if x%2 == 0:
chr(ord(string[x])-2)
else:
flag = string[::-1]
return flag
print(mix(text))
Подскажите,где я в коде накосячил?
Ошибка:
string = "".join(chr(ord(string[x])-1))
IndexError: string index out of range
Работать должен следующим образом:программа берет строчку из text и сокращает её до состояния ~Fowph`i5ngafGfY|huebthw -> образовав новую строчку (string), далее надо брать каждый символ по индексу (из string) и преобразовывать по алгоритму:
if x%2 == 0:
chr(ord(string[x])-2)
else:
flag = string[::-1]
И должен получится более читабельный вид этой строчки
Ответы (1 шт):
Автор решения: Maxim Timakov
→ Ссылка
Ошибка состоит в том, что на первом проходе цикла переменной string присваивается строка из одного символа.
Если я правильно понял, то первая часть алгоритма должна выбрасывать символы на нечетных местах.
Для этого подойдет следующий код
text = '~qFmobwfpfhe`pin5unugkaqfyGhfcYf|chtugenbrtchtwl'
# оставить только символы с четными индексами
tmp = [text[idx] for idx in range(0, len(text), 2)]
print("".join(tmp))
Получим:
text = '~qFmobwfpfhe`pin5unugkaqfyGhfcYf|chtugenbrtchtwl'
def mix(text):
# string = text[::2]
# оставить только символы с четными индексами
tmp = [text[idx] for idx in range(0, len(text), 2)]
string = "".join(tmp)
# для каждого символа строки провести какие то дейтсвия
for x in range(len(string)):
# string = "".join(chr(ord(string[x])-1))
if x%2 == 0:
chr(ord(string[x])-2) # <<< бессмыслица
else:
flag = string[::-1] # <<< бессмыслица
return flag # <<< бессмыслица
print(mix(text))
Так код не будет падать с ошибкой, но так же по прежнему не будет иметь смысла.