С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
1

IndexError: string index out of range

09.09.2019, 19:15. Показов 1083. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def decodeXor(cypherString, key):
    plainText = ''
    cypherArray = []
    i = 0
    for i in range(0, len(cypherString), 2):
        cypherArray.append(cypherString[i] + cypherString[i + 1])
    for i in range(0, len(cypherArray), 1):
        hex = cypherArray[i]
        dec = int(hex, 16)
        keyPointer = i % len(key)
        asciiCode = dec ^ ord(key[keyPointer])
        plainText += chr(asciiCode)
    return plainText
т.е. у меня строка около 300 символов шифрованная, а то и еще больше, если я пишу так:
Получение строк с сайта: services = requests.get(...');
Разделение текста на строки Services = Services.text.split('\n')
Decoded = decodeXor(Services[1],Token);
и тут пишет ошибку

Traceback (most recent call last):
File "", line 52, in <module>
decoded = decodeXor(Services[1],Token)
File "", line 32, in decodeXor
cypherArray.append(cypherString[i] + cypherString[i + 1])
IndexError: string index out of range

Но если я вручную вписываю строку и ключ decoded('123123123123123','1231231') и тд, но все расшифровывается нормально, без ошибок, как-то можно пофиксить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2019, 19:15
Ответы с готовыми решениями:

IndexError: string index out of range
class TicTacToeBoard: def __init__(self): self.set = , , ] self.count = 0 ...

IndexError: string index out of range
Помогите найти ошибку в коде... Traceback (most recent call last): File &quot;jailed_code&quot;, line...

IndexError: string index out of range
a = str(input()) b = int(input()) if b &lt;= len(a): print(a) else: print(&quot;ОШИБКА&quot;) ...

Builtins.IndexError: string index out of range
Ошибка возникает в 17-ой строке: #function description section #list fill function def...

Traceback (most recent call last): File "<string>", line 5, in <module> IndexError: list index out of range
from random import random as r n,k=map(int,input('n k &gt; ').split()) k-=1; b=range(n) a= for i in...

16
Эксперт Python
4640 / 2056 / 363
Регистрация: 17.03.2012
Сообщений: 10,139
Записей в блоге: 6
09.09.2019, 19:42 2
Python
1
2
    for i in range(0, len(cypherString), 2):
        cypherArray.append(cypherString[i] + cypherString[i + 1])
Когда так делаешь, в любом случае подозрительно, что i+1 вылетит за пределы. Но тут даже можно додумать, когда вылетает.
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 20:01  [ТС] 3
Цитата Сообщение от dondublon Посмотреть сообщение
Когда так делаешь, в любом случае подозрительно, что i+1 вылетит за пределы. Но тут даже можно додумать, когда вылетает.
да это понятно, просто не понятно почему он не вылетает, когда строки руками пишешь и как пофиксить это, подскажи если можешь, был бы очень признателен
0
Автоматизируй это!
Эксперт Python
7211 / 4706 / 1224
Регистрация: 30.03.2015
Сообщений: 13,412
Записей в блоге: 29
09.09.2019, 20:29 4
Цитата Сообщение от Valimer Посмотреть сообщение
да это понятно, просто не понятно


Цитата Сообщение от Valimer Посмотреть сообщение
почему он не вылетает, когда строки руками пишешь
даже никаких преположений? а если подумать про четное и нечетное количество букв и еще раз внимательно посмотреть на вот это (важные моменты выделены)
Цитата Сообщение от Valimer Посмотреть сообщение
for i in range(0, len(cypherString), 2):
* * * * cypherArray.append(cypherString[i] + cypherString[i + 1])
Добавлено через 1 минуту
возьми листочек бумаги и реши как этот цикл отработает на строке из 2 букв, а потом из 3...
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 20:48  [ТС] 5
хм, просто эту функцию мне пришлось конвертировать из Delphi, там она выглядит именно так, да и то мне помогали тут на форуме

Добавлено через 1 минуту
да и потом раньше таких проблем не было
0
Автоматизируй это!
Эксперт Python
7211 / 4706 / 1224
Регистрация: 30.03.2015
Сообщений: 13,412
Записей в блоге: 29
09.09.2019, 20:49 6

Не по теме:

Valimer, эх, Дельфи, молодость...

не надо ничего конвертировать, подумай что должно происходить и напиши
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 20:49  [ТС] 7
Цитата Сообщение от Welemir1 Посмотреть сообщение
даже никаких преположений? а если подумать про четное и нечетное количество букв и еще раз внимательно посмотреть на вот это (важные моменты выделены)
так, а какая разница?
что написать "123123123123" И k="123123123123", только в 1 случае работает
0
Автоматизируй это!
Эксперт Python
7211 / 4706 / 1224
Регистрация: 30.03.2015
Сообщений: 13,412
Записей в блоге: 29
09.09.2019, 20:49 8
Цитата Сообщение от Valimer Посмотреть сообщение
да и потом раньше таких проблем не было
четная дина строки, нечетная длина...
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 20:50  [ТС] 9
Цитата Сообщение от Welemir1 Посмотреть сообщение
не надо ничего конвертировать, подумай что должно происходить и напиши
XOR decode, расшифровка ключа, шифрованного в XOR, для pythona данной ф-ии не нашел и пришлось переписывать от delphi
0
Автоматизируй это!
Эксперт Python
7211 / 4706 / 1224
Регистрация: 30.03.2015
Сообщений: 13,412
Записей в блоге: 29
09.09.2019, 20:50 10
Цитата Сообщение от Valimer Посмотреть сообщение
так, а какая разница?
разница в тм что в одном случае работает а в другом нет
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 20:53  [ТС] 11
нужно расшифрование текста в XOR, не Hex

Добавлено через 32 секунды
Цитата Сообщение от Welemir1 Посмотреть сообщение
разница в тм что в одном случае работает а в другом нет
в этом и вопрос - ПОЧЕМУ? кол-во символов одинаковое
0
Автоматизируй это!
Эксперт Python
7211 / 4706 / 1224
Регистрация: 30.03.2015
Сообщений: 13,412
Записей в блоге: 29
09.09.2019, 20:55 12
Valimer, ну так исправь цикл и радуйся жизни

Добавлено через 1 минуту
Цитата Сообщение от Valimer Посмотреть сообщение
в этом и вопрос - ПОЧЕМУ? кол-во символов одинаковое
не знаю о чем ты, воспользуйся дебагером и смотри что там за значения. Если ошибка та же, то и причина там же.
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 20:55  [ТС] 13
исправил, однако не работает

def decodeXor(cypherString, key):
plainText = ''
cypherArray = []
i = 0
for i in range(0, len(cypherString), 1):
cypherArray.append(cypherString[i] + cypherString[i + 1])
for i in range(0, len(cypherArray), 1):
hex = cypherArray[i]
dec = int(hex, 16)
keyPointer = i % len(key)
asciiCode = dec ^ ord(key[keyPointer])
plainText += chr(asciiCode)
return plainText
0
Автоматизируй это!
Эксперт Python
7211 / 4706 / 1224
Регистрация: 30.03.2015
Сообщений: 13,412
Записей в блоге: 29
09.09.2019, 20:58 14
Цитата Сообщение от Valimer Посмотреть сообщение
исправил, однако не работает
не исправил, проверять надо так -вот этот твой "исправленный" цикл проверяй дебаггером или просто на листочке
вот как ты думаешь -дошел ты до последнего элемента в строке и потом такой cypherString[i + 1], а там нет +1, все, амба, кончилась строка
еще подумай, не спеши
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 21:09  [ТС] 15
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function XorDecode(Source, Key: string): string;
var
  I: integer;
  C: Char;
begin
  Result := '';
  for I := 0 to Length(Source) div 2 - 1 do
  begin
    C := Char(StrToIntDef('$' + Copy(Source, (I * 2) + 1, 2), Ord(' ')));
    if Length(Key) > 0 then
      C := Char(Byte(Key[1 + (I mod Length(Key))]) xor Byte(C));
    Result := Result + C;
  end;
end;
Добавлено через 10 минут
посмотрел на код delphi и понял ошибку
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def decodeXor(cypherString, key):
    plainText = ''
    cypherArray = []
    i = 0
    lencypher = int(len(cypherString))-1
    for i in range(0, lencypher,2):
        cypherArray.append(cypherString[i] + cypherString[i + 1])
    for i in range(0, len(cypherArray), 1):
        hex = cypherArray[i]
        dec = int(hex, 16)
        keyPointer = i % len(key)
        asciiCode = dec ^ ord(key[keyPointer])
        plainText += chr(asciiCode)
    return plainText
0
Эксперт Python
5435 / 3858 / 1215
Регистрация: 28.10.2013
Сообщений: 9,553
Записей в блоге: 1
09.09.2019, 21:54 16
Цитата Сообщение от Valimer Посмотреть сообщение
для pythona данной ф-ии не нашел
Код
твой_любимый_поиcковик> -site:github.com python xor decode
IndexError: string index out of range

В Python для такого кода вовсе не требуется использование индексов. Потому что Python не Delphi.

Пример из одного кода на гитхабе:
Python
1
2
def xor(plaintext, key):
    return "".join(chr(ord(p)^ord(k)) for p, k in zip(plaintext, key))
0
7 / 6 / 1
Регистрация: 29.03.2015
Сообщений: 501
09.09.2019, 21:56  [ТС] 17
не каждый код что написан подходит, потому что тут шифрование выдает как HEX
0
09.09.2019, 21:56
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2019, 21:56
Помогаю со студенческими работами здесь

IndexError: list index out of range
Добрый день, столкнулся с такой проблемой: создавал телеграм-бота, и при вводе боту команды &quot;/add&quot;,...

IndexError: list index out of range
Уважаемые господа форумчане, начал изучать пайтон, и вот что не понятно: fileWords =...

IndexError: list index out of range
помогите, пожалуйста. в 25 и 32 строчках выдаёт ошибку: IndexError: list index out of range def...

IndexError: list index out of range
Здравствуйте. Вот код. Пишет ошибка. Не могу понять как исправить ошибку. Прошу помощи. def...

IndexError: list index out of range
В питоне вылазит ошибка IndexError: list index out of range import re print(&quot;Введи значение A...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru