Найти в Дзене
Репетитор IT men

Циклы и их прерывания в Python: алгоритм поиска в строке

Оглавление

Это заметка будет для начинающих, которые только знакомятся с программированием, информатикой и с языком Python, в частности. Вчера мы с учеником изучали циклы и некоторые операторы, которые дают возможность управлять циклами. В этой небольшой статье я покажу несколько примеров. При этом от совсем простых абстракций постараемся углубиться в более полезные вещи с практической точки зрения.

Циклы в Python позволяют выполнять одно действие несколько раз подряд. С их помощью можно автоматизировать задачи, парой строк кода выполнять несколько действий и генерировать данные.

В Python существует два основных типа циклов: for и while.

Цикл WHILE

Цикл while ( условие) {инструкции} является самым универсальным циклом. Но и довольно медленным в Python. Цикл выполняет внутреннее тело (набор инструкций до тех пор, пока условие в начале цикла истинно. Условие проверяется на каждой итерации.

Классическая ошибка начинающих изучать программирование в том, что они забывают изменять переменную, что приводит к бесконечному циклу while.

-2

Цикл while в Python выполняется, пока условие истинно. Синтаксис цикла while выглядит так:

while условие:
# код для выполнения

Цикл FOR

Еще один пример, когда мы пробегаем по перечисляемой структуре, например по строке. Здесь цикл for-in работает так, что переменная i последовательно принимает значение каждой буквы в строке.

-3

Цикл for используется для итерации по последовательности (например, списки, кортежи, строки). Синтаксис цикла for выглядит следующим образом:

for переменная in последовательность: # код для выполнения

Оператор CONTINUE

Оператор continue в Python позволяет «перепрыгнуть» оставшиеся выражения в цикле и перейти к следующей итерации. Другими словами, он пропускает условие и продолжает итерацию цикла.

Рассмотрим пример, когда мы хотим пропустить какую-то единицу перечисляемой структуры. Например хотим пропустить одну букву (символ) в строке:

-4

Где еще в нам может понадобиться пропуск итерации? Например, нам нужно посчитать (вывести таблицу значений) выражение x/k , где k пробегает значения от -10 до +10. Мы начинаем кодить цикл, тестируем его на значения 1 < k < 10, у нас всё отлично, затем расширяем диапазон -10 < k < 10 и хоба...

-5

Мы получаем страшное красное сообщение:

-6

Чтобы это исправить, мы можем ловко обойти ошибку, возникающую при делении на ноль (не все языки программирования оперируют сущностью бесконечности = infinity = inf = ∞ ), мы можем использовать оператор continue следующим способом:

-7

Оператор BREAK

Оператор break в Python позволяет досрочно прервать цикл. Он используется, если в цикле образуются условия, которые несовместимы с его дальнейшим выполнением. Или же, когда мы уже что-то нашли и нам не нужно продолжать цикл до конца. К примеру, мы нашли, что определенный элемент есть в рассматриваемой коллекции (список, кортеж, словарь, строка).

При выполнении оператора break программа немедленно выходит из цикла, и управление переходит к следующей строке кода после цикла. Если используется несколько вложенных циклов, break прерывает внутренний цикл и продолжает выполнять выражения, следующие за блоком.

Иногда нам нужно не прервать текущую итерацию и продолжить со следующей, как это делает оператор continue, а полностью прервать выполнение цикла и выйти в точку, которая находится сразу после цикла. Тогда мы используем оператор break, который полностью прерывает цикл при своём вызове. Вызов можно обернуть в определенное [нужное нам по логике алгоритма] условие выхода.

Решим такую практическую задачу:
Найти индекс (номер) определенной буквы в строке во время первого вхождения этой буквы.

Решение:

Рассмотрим что представляет из себя строка и что мы должны получить, если мы хотим, к примеру, найти индекс буквы «t» :

Нумерация идет с нуля. Пробелы тоже являются символами и имеют свои индексы.
Нумерация идет с нуля. Пробелы тоже являются символами и имеют свои индексы.
-9

А что если мы хотим обернуть наш алгоритм в функцию и вызывать её с разными нужными нам параметрами?

Задача: Написать функцию, которая выводит на экран индекс нужного символа в передаваемой строке. В случае, если символ не найден, то выводит -1. Входные параметры: строка и символ.
Выходные параметры: номер символа в строке, -1 если не нашлось.

Решение:

-10

Более сложные статьи:

Понравилась статья? Поставьте лайк, подпишитесь на канал, напишите комментарий! Вам не сложно, а мне очень приятно :)

ВКонтакте | ВКонтакте
https://vk.com/itmentor
https://vk.com/itmentor

Если Вам нужен репетитор по физике, математике или информатике/программированию, Вы можете написать мне или в мою группу Репетитор IT mentor в VK

Библиотека с книгами для физиков, математиков и программистов Репетитор IT mentor в VK
Репетитор IT mentor в telegram