Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 19, 2019 21:20:28

Ulia
Зарегистрирован: 2019-09-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка стандартная, причины не понятны(

По заданию (учусь) пишу код, запускаю проверку, проверка выдает ошибку: помогите, расскажите как ее исправить?
отметила строки по номерам # для ориентира
ошибка в строке 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)

Отредактировано Ulia (Сен. 19, 2019 21:24:57)

Офлайн

#2 Сен. 19, 2019 21:40:28

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

ошибка стандартная, причины не понятны(

Ты же изменяешь строку. Укорачиваешь ее, а индекс берешь за ее пределами и вот поэтому ошибка. Как вариант сделать копию строки и работать с двумя строками.

 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. Код вставляй в теги, смотреть рядом со смайликом…

Офлайн

#3 Сен. 19, 2019 21:57:24

Ulia
Зарегистрирован: 2019-09-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка стандартная, причины не понятны(

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version