ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 406
Скачиваний: 3
СОДЕРЖАНИЕ
Задание по программированию: Следующее и предыдущее
Примеры использования логических выражений
Вложенный условный оператор и "иначе-если"
Задание по программированию: Какое число больше?
Задание по программированию: Максимум трех чисел
Задание по программированию: Високосный год
Тренировочное задание по программированию: Ход короля
Тренировочное задание по программированию: Квартиры
Задание по программированию: Коровы
Задание по программированию: Упорядочить три числа
Задание по программированию: Сколько совпадает чисел
Тренировочное задание по программированию: Цвет клеток шахматной доски
Тренировочное задание по программированию: Шоколадка
Задание по программированию: Коровы
Задание по программированию: Узник замка Иф
Задание по программированию: Список квадратов
Задание по программированию: Минимальный делитель
Тренировочное задание по программированию: Список степеней двойки
Задание по программированию: Утренняя пробежка
Задание по программированию: Максимум последовательности
Подсчет суммы и оператор continue
Задание по программированию: Сумма квадратов
Задание по программированию: Длина последовательности
Задание по программированию: Сумма последовательности
Задание по программированию: Максимальное число подряд идущих равных
Задание по программированию: Количество четных элементов последовательности
Задание по программированию: Второй максимум
Задание по программированию: Количество элементов, равных максимуму
Как устроены вещественные числа
Основы работы с вещественными числами
Задание по программированию: Округление по российским правилам
Задание по программированию: Проценты
Задание по программированию: Квадратное уравнение - 1
Задание по программированию: Система линейных уравнений - 1
Задание по программированию: Делаем срезы
Задание по программированию: Первое и последнее вхождение
Задание по программированию: Удаление фрагмента
Задание по программированию: Второе вхождение
Задание по программированию: Переставить два слова
Задание по программированию: Количество слов
Задание по программированию: Замена подстроки
Задание по программированию: Удаление символа
Задание по программированию: Минимум 4 чисел
Возврат нескольких значений функцией
Задание по программированию: Принадлежит ли точка квадрату - 1
Задание по программированию: Принадлежит ли точка кругу
Задание по программированию: Минимальный делитель числа
Локальные и глобальные переменные
Задание по программированию: Проверка числа на простоту
Задание по программированию: Возведение в степень
Задание по программированию: Сложение без сложения
Задание по программированию: Быстрое возведение в степень
Задание по программированию: Сократите дробь
Задание по программированию: Сумма последовательности
Задание по программированию: Разворот последовательности
Задание по программированию: Ряд - 1
Задание по программированию: Ряд - 2
Метод find
Методы - это функции, применяемые к объектам. Метод вызывается с помощью записи ИмяОбъекта.НазваниеМетода(Параметры). Методы очень похожи на функции, но позволяют лучшим образом организовывать хранение и обработку данных. Например, вы написали свою структуру данных и хотели бы, чтобы функция len возвращала длину вашей структуры. Чтобы это заработало, вам придется лезть в исходный код интерпретатора Питона и вносить изменения в функцию len. Если бы len было методом, то вы могли бы описать этот метод при создании структуры и никаких изменений в коде интерпретатора или стандартной библиотеки не потребовалось бы. Поэтому методы предпочтительнее для сложных структур, например, таких как строки.
У строк есть множество различных методов. В этом разделе мы рассмотрим методы поиска подстроки в строке. Метод find возвращает индекс первого вхождения подстроки в строку, а если она не нашлась -1. Например, 'String'.find('ing') вернет 3 - индекс, с которого начинается вхождение подстроки ing.
Существуют модификации этих методов с двумя параметрами. s.find(substring, from) будет осуществлять поиск в подстроке s[from:]. Например, 'String'.find('ing', 1) вернет 3 (нумерация символов остается как в исходной строке). По аналогии со срезами параметры могут быть и отрицательными.
Также есть модификации с тремя параметрами: они ищут подстроку в срезе s[a:b].
Часто возникает задача найти и вывести все вхождения подстроки в строку, включая накладывающиеся. Например, для строки 'ABABA' и подстроки 'ABA' ответ должен быть 0, 2. Ее решение выглядит так:
string = input()
substring = input()
pos = string.find(substring)
while pos != -1:
print(pos)
pos = string.find(substring, pos + 1)
Задание по программированию: Делаем срезы
Формат ввода
Дана строка.
Формат вывода
Сначала выведите третий символ этой строки.
Во второй строке выведите предпоследний символ этой строки.
В третьей строке выведите первые пять символов этой строки.
В четвертой строке выведите всю строку, кроме последних двух символов.
В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).
В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.
В седьмой строке выведите все символы в обратном порядке.
В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего.
В девятой строке выведите длину данной строки.
Примечание
Данная строка имеет достаточную длину для выполнения всех предложенных срезов.
Тест 1
Входные данные:
Abrakadabra
Вывод программы:
r
r
Abrak
Abrakadab
Arkdba
baaar
arbadakarbA
abdkrA
11
Решение
s = input()
print(s[2])
print(s[-2])
print(s[:5])
print(s[:-2])
print(s[::2])
print(s[1::2])
print(s[::-1])
print(s[::-2])
print(len(s))
Задание по программированию: Первое и последнее вхождение
Дана строка. Если в этой строке буква f встречается только один раз, выведите её индекс. Если она встречается два и более раз, выведите индекс её первого и последнего появления. Если буква f в данной строке не встречается, ничего не выводите. При решении этой задачи нельзя использовать метод count и циклы.
Форматввода
Вводится строка.
s = input()
if s.find('f') == s.rfind('f') and 'f' in s:
print(s.find('f'))
elif 'f' in s:
print(s.find('f'), s.rfind('f'))
Задание по программированию: Удаление фрагмента
Дана строка, в которой буква h встречается минимум два раза. Удалите из этой строки первое и последнее вхождение буквы h, а также все символы, находящиеся между ними.
Формат ввода
Вводится строка.
Тест 1
Входные данные:
In the hole in the ground there lived a hobbit
Вывод программы:
In tobbit
Решение
s = input()
print(s[:s.find('h')] + s[s.rfind('h') + 1:])
Задание по программированию: Второе вхождение
Дана строка. Найдите в этой строке второе вхождение буквы f и выведите индекс этого вхождения. Если буква f в данной строке встречается только один раз, выведите число -1, а если не встречается ни разу, выведите число -2. При решении этой задачи нельзя использовать метод count.
Формат ввода
Вводится строка.
n = input()
pos = n.find('f')
if pos != -1:
pos = n.find('f', pos + 1)
if pos != -1:
n.find('f', pos + 1)
print(pos)
else:
print(-1)
else:
print(-2)
Задание по программированию: Переставить два слова
Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами. Результат запишите в строку и выведите получившуюся строку. При решении этой задачи нельзя пользоваться циклами и инструкцией if.
Формат ввода
Вводится строка.
Тест 1
Входные данные:
Hello, world!
Вывод программы:
world! Hello,
Решение
s = input()
L = len(s)
space = s.find(' ')
print(s[space + 1:L], s[:space], sep=' ')
Методы rfind, replace и count
Метод rfind работает аналогично find, но ищет самое правое вхождение.
Метод replace(old, new) позволяет заменить все вхождения подстроки old на подстроку new. При этом конструируется новая строка, где были произведены замены. Нужно обратить внимание, что метод replace заменяет вхождения подстрок без учета предыдущих совершенных замен. Если применить следующую операцию 'AAAAAA'.replace('AA', 'A'), то в результате получится строка 'AAA', а не 'A', как можно было бы ожидать.
Фактически, можно считать, что метод replace находит очередное вхождение подстроки old, осуществляет замену и продолжает поиск с позиции после всех замененных символов (без наложения и поиска в свежезамененной части).
Существует модификация replace(old, new, count), которая осуществляет не более count замен самых левых вхождений подстроки old.
Также для строк существует метод count, который позволяет подсчитать количество вхождений подстроки. По аналогии с методом find определены методы count с двумя и тремя параметрами.
Задание по программированию: Количество слов
Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов.
Формат ввода
Вводится строка.
s = input()
print(s.count(' ') + 1)
Задание по программированию: Замена подстроки
Дана строка. Замените в этой строке все цифры 1 на слово one.
Формат ввода
Вводится строка.
Решение
s = input()
print(s.replace('1', 'one'))
Задание по программированию: Удаление символа
Дана строка. Удалите из этой строки все символы @.
Формат ввода
Вводится строка.
s = input()
print(s.replace('@', ''))
Функции
Функции - части программы, которые можно повторно вызывать с разными параметрами, чтобы не писать много раз одно и то же. Функции в программировании немного отличаются от математических функций. В математике функции могут только получить параметры и дать ответ, в программировании же функции умеют делать что-нибудь полезное, например, ничего не возвращать, но что-то печатать.
Функции чрезвычайно полезны, если одни и те же действия нужно выполнять несколько раз. Но некоторые логические блоки работы с программой иногда тоже удобно оформлять в виде функции. Это связано с тем, что человек может одновременно держать в голове ограниченное количество вещей. Когда программа разрастается, отследить все уже очень сложно. В пределах одной небольшой функции запутаться гораздо сложнее - известно, что она получает на вход, что должна выдать, а об остальной программе в это время можно не думать.
В программировании также считается хорошим стилем писать функции, умещающиеся на один экран. Тогда можно одновременно окинуть взглядом всю функцию и не нужно крутить текст туда-сюда. Поэтому, если получилось что-то очень длинное, то нужно нарезать его на кусочки так, чтобы каждый из них был логичным (делал какое-то определенное действие, которое можно назвать) и не превышал при этом 10-15 строк.
Мы уже использовали готовые функции, такие как print, len и некоторые другие. Эти функции описаны в стандартной библиотеке или других подключаемых библиотеках. Сегодня мы научимся создавать свои функции.