@bmc41

В чем проблема решения?

Добрый день, друзья, изучая программирование столкнулся с проблемой. В ide код работает и с любыми значениями и выдает правильный результат. При отправке кода на платформу stepic код выдает такую ошибку:

Failed test #4 of 15. Runtime error
Error:
Traceback (most recent call last):
  File "jailed_code", line 7, in <module>
    if a[b] != a[c]:
IndexError: string index out of range


Мой код, который работает в IDE

a = input()
b = 0
c = 1
v = 1
x = 1
while x <= len(a):
    if a[b] != a[c]:
        print(a[b],v, sep="", end="")
        v = 0
    if x+1 == int(len(a)):
        print(a[c],v+1 , sep="", end="")
        break
    b += 1
    c += 1
    v += 1
    x += 1


Sample Input 1:

aaaabbcaa
Sample Output 1:

a4b2c1a2
Sample Input 2:

abc
Sample Output 2:

a1b1c1

Подскажите куда копать, заранее благодарен!
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Код заваливается, если на входе строка из одного символа.

И вообще всё можно упростить, зачем тебе столько индексов?

line = input()
last = None
counter = 0
for ch in line:
    if ch != last:
        if last is not None:
            print(counter, end='')
        counter = 1
        last = ch
        print(ch, end='')
    else:
        counter += 1
if last is not None:
    print(counter, end='')

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dmshar
Может вы не будете считать, что все вокруг обязаны знать, что за задачу вы решаете? Не код, который вы очевидно написали с ошибкой, а саму исходную задачу?
А поскольку вы этого не делаете, то сообщаю вам, что ваш код падает с указанной ошибкой например в случае, если на его вход будет подано число. Падает он и при попытке ввести строку из одного символа. Похоже вы отладкой своего кода особо не заморачивались. Может и в каких других ситуациях он падает, но коль скоро условие задачи вы засекретили - то дальше придется разбираться самому.
И, кстати, IDE или нет - тут ни при чем. Он падает в указанных случаях всегда и везде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы