Найти - Пользователи
Полная версия: ошибка стандартная, причины не понятны(
Начало » Python для новичков » ошибка стандартная, причины не понятны(
1
Ulia
По заданию (учусь) пишу код, запускаю проверку, проверка выдает ошибку: помогите, расскажите как ее исправить?
отметила строки по номерам # для ориентира
ошибка в строке 7:
Traceback (most recent call last):
File “D……..py”, line 7, in <module>
b = s
IndexError: string index out of range

если в строке 7, в квадратных скобках, вместо d ставлю 0 все работает, не так как надо для решения задачи, но ошибки никакой нет (буквы разные в примерах, пробовала решить как описано ниже)

запустила онлайн компилятор, такая же ошибка

до этого была такая же ошибка с решением другой задачи поменяла переменную i на d и все заработало
пробовала название переменной копировать вставить, чтобы точно совпадало, не помогло

http://joxi.ru/zANNJlMHv3o57A
http://joxi.ru/v29EaKRfZBPk82
скрины, на которых видно, что при замене значения в скобках с переменной на цифру, работает, с переменной в скобках не работает

код:
s = “0123456789”
l = len(s)
d = 0
b = ‘'
result = ’'
while d < l:
b = s(d) #7 скобки квадратные, по другому удаляется
result = s.replace(b, '')
s = result
d = d + 3
print(s)
Romissevd
Ты же изменяешь строку. Укорачиваешь ее, а индекс берешь за ее пределами и вот поэтому ошибка. Как вариант сделать копию строки и работать с двумя строками.
 sc = '0123456789'
s = sc
l = len(s)
d = 0
b = ''
result = ''
while d < l:
    b = sc[d]
    result = s.replace(b, '')
    s = result
    d = d + 3
print(s)
P.S. Код вставляй в теги, смотреть рядом со смайликом…
Ulia
Romissevd
Ты же изменяешь строку. Укорачиваешь ее, а индекс берешь за ее пределами и вот поэтому ошибка. Как вариант сделать копию строки и работать с двумя строками.

Спасибо, добавила вторую строку: s = sc + изменила строку 7, заработало.
и спасибо за совет про код, не знала.

Не поняла, почему индекс за пределами, если d = 0 и в квадратных скобках d (строка 7), который равен 0 == ошибка, 0 за пределами строки? или 0 меняется на другую цифру?
Если ставлю в строке 7 вместо d 0 (код прикрепила), ошибки нет (меняется функционал кода, но здесь понятно, почему меняется функционал)

  
s = '0123456789'
l = len(s)
d = 0
b = ''
result = ''
while d < l:
    b = s[0]      #стр7
    result = s.replace(b, '')
    s = result
    d = d + 3
print(s)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB