Разбор задач 24 ЕГЭ информатика(Python)
материал для подготовки к егэ (гиа) по информатике и икт (11 класс)
Разбиратся задача №24 ЕГЭ по информатике(обработка символьных строк) на языке программирования Python.
Скачать:
Вложение | Размер |
---|---|
Обработка символьных строк(Python) | 272.05 КБ |
Предварительный просмотр:
Подписи к слайдам:
Что нужно знать : сначала нужно прочитать строку из файла; эта задача в разных языках программирования решается несколько по-разному в языке Python удобнее всего использовать такую конструкцию: with open("k7.txt", "r") as F: s = F.readline () конструкция with-as – это контекстный менеджер , в данном случае он открывает указанный файл в режиме чтения (второй аргумент « r » при вызове функции open ), записывает ссылку на него в файловую переменную F , выполняет тело блока (читает первую строку файла в переменную s ) и закрывает (освобождает) файл. 1. Самая длинная цепочка символов «С» пусть требуется найти самую длинную цепочку символов С (или каких-то других, в соответствии с заданием) в символьной строке s ; можно использовать такой алгоритм: for c in s : обработать символ c
будем использовать переменные cLen – длина текущей цепочки букв C maxLen – максимальная длина цепочки букв C на данный момент рассмотрим очередной символ строки; если это буква C, увеличиваем cLen на 1 и, если нужно запоминаем новую максимальную длину; если это не буква C, просто записываем с cLen ноль: maxLen = 0 cLen = 0 for c in s: if c == 'C’: cLen += 1 # ещё одна буква C if cLen > maxLen : # возможно, новая максимальная длина maxLen = cLen else: cLen = 0 # цепочка букв C кончилась
2. Самая длинная цепочка любых символов теперь поставим задачу найти самую длинную цепочку символов в символьной строке s ; сложность состоит в том, что мы (в отличие от предыдущей задачи) не знаем, из каких именно символов состоит самая длинная цепочка если символов в алфавите немного (скажем, A, B и С), то можно с помощью описанного выше алгоритма найти самые длинные цепочки из букв A, B и C, а затем выбрать из них «длиннейшую»; такая идея может сработать при аккуратной реализации, но плохо обобщается на случай, когда возможных символов много (например, используются все заглавные латинские буквы и цифры) будем использовать переменные curLen – длина текущей цепочки одинаковых символов maxLen – максимальная длина цепочки одинаковых символов на данный момент c – символ, из которого строится самая длинная подцепочка в начальный момент рассмотрим один первый символ (цепочка длины 1 есть всегда!): maxLen = 1 curLen = 1 c = s[0]
будем перебирать в цикле все символы, начиная с s[1] (второго по счёту) до конца строки, постоянно «оглядываясь назад», на предыдущий символ for i in range(1,len(s)): обработать пару символов s [ i -1] и s [ i ] если очередной символ s[i] такой же, как и предыдущий, цепочка одинаковых символов продолжается, и нужно увеличить значение переменной cu r Len ; если значение cu r Len стало больше maxLen , обновляем maxLen и запоминаем новый базовый символ в переменной c : если очередной символ не совпал с предыдущим, началась новая цепочка, и её длина пока равна 1 (это значение записывается в переменную cu r Len )
maxLen , curLen , c = 1, 1, s[0] for i in range(1, len (s)): if s[ i ] == s[i-1]: # цепочка продолжается curLen += 1 # увеличиваем длину if curLen > maxLen : # если цепочка побила рекорд maxLen = curLen # запоминаем её длину c = s[ i ] # и образующий символ else : curLen = 1 # началась новая цепочка
2510) В текстовом файле k7a-2.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите длину самой длинной подцепочки, состоящей из символов A, B или C (в произвольном порядке). сначала нужно открыть файл и прочитать все символы в символьную строку: потом можно в цикле перебрать все символы строки s: определить наибольшую подстроку, состоящей из символов A, B или C, в символьной строке s . Проверку того, что символ – один из набора A, B, C удобно записывать с помощью условия if char in 'ABC’: s=open('k7a-2.txt').read() count = 0 maxCount = 0 for char in s: if char in 'ABC': count += 1 if count> maxCount : maxCount = count else: count=0 print( maxCount )
Решаем номера 2516, 2518, 2520 Использованы задачи с сайта Полякова К.Ю.
По теме: методические разработки, презентации и конспекты
Разбор задач по программированию. Оператор Case
В презентации рассматриваются решения стандартных задач с использованием оператора Case на языке Паскаль. Программы прилагаются (протестированы на Pascal ABC)....
Разбор задачи на закон Ома с источниками тока
Разбор задачи на закон Ома с источниками тока...
разбор задач гиа по информатике
Приводится краткий разбор задая гиа по информатика за 9 класс...
Разбор задачи "3800 задач для школьников..." : 1-267
Подробный разбор 2-х случаев решения задачи, с разбором ошибочного ответа в задачнике...
Разбор задачи "3800 задач по физике..." 1-268 перелёт над домом с покатой крышей
Подробный разбор задачи 1-268: При какой минимальной начальной скорости можно перебросить камень через дом с покатой крышей? Ближайшая стена имеет высоту H, задняя стена – высоту h, ширина дома равна ...
Программирование для школьников: Разбор задач командной олимпиады по программированию на языке Лого – 2015
Весной 2015 года, в Петербурге проходила восемнадцатая командная олимпиада по программированию на языке Лого. В каждой команде два человека и один...
Дидактические материалы для занятий математического кружка "Математика +" 7 класс. Занятие24. Разбор задач по теме "Линейная функция"
Математический кружок- одна из наиболее эффективных форм внеклассных занятий. Для меня, как учителя, важно иметь под рукой пособие, в котором представлены идеи решений и которое позволило бы провести ...