Уведомления

Группа в Telegram: @pythonsu

#1 Май 2, 2022 14:58:42

Mr.Gned
Зарегистрирован: 2022-05-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните решение

Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.

Кодирование осуществляется следующим образом:
s = ‘aaaabbсaa’ преобразуется в ‘a4b2с1a2’, то есть группы одинаковых символов исходной строки заменяются на этот символ и количество его повторений в этой позиции строки.

Напишите программу, которая считывает строку, кодирует её предложенным алгоритмом и выводит закодированную последовательность на стандартный вывод. Кодирование должно учитывать регистр символов.


с решением помогли, но я не понимаю почему х = 1, мы же сравниваем первый и второй символ, а первый символ в строке 0. В чем логика?????
Решение:
message = str(input())
cnt = 1
x = 1
j = message (x:x+1)
for i in message:
if i in j:
cnt += 1
else:
print(i, end='')
print(cnt, end='')
cnt = 1
x += 1
j = message (x:x+1)

# скобки квадратные

Отредактировано Mr.Gned (Май 2, 2022 15:02:18)

Офлайн

#2 Май 2, 2022 22:25:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Объясните решение

Mr.Gned
но я не понимаю почему х = 1, мы же сравниваем первый и второй символ
Да ты просто не понял алгоритм, который реализован в этом коде. Чтобы понимать алгоритмы, реализованные в кодах, надо уметь рисовать блок-схемы. Также надо уметь пользоваться дебаггером. Чтобы уметь рисовать блок-схемы, надо их постоянно рисовать для своих кодов и желательно это делать до написания кодов, а не после, хотя поначалу ты это делаешь для кодов, которые уже написаны. Когда научишься рисовать блок-схемы на бумаге, со временем ты начнёшь их рисовать в воображении. И вот из блок-схемы, нарисованной в воображении, ты как раз и увидишь, почему x = 1 и почему там нуля нет.

Я бы тебе посоветовал в этом коде i заменить на char, а j заменить на nextchar. И x тоже надо заменить на nextcharpos. Из-за этих тупых названий переменных, которые тебе предложили, этот код и нечитаем.



Отредактировано py.user.next (Май 2, 2022 22:26:23)

Офлайн

#3 Май 3, 2022 06:45:01

Mr.Gned
Зарегистрирован: 2022-05-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните решение

Спасибо за совет, согласен с названиями полная непонятка. Сейчас попробую блок- схему нарисовать

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version