Циклы и условия

Циклы и условия — ключевые инструменты в программировании. Поэтому стоит рассмотреть ещё несколько примеров.

Пример 1: Запуск цикла при условии

Задача: написать функцию shouter, которая принимает строку и, если в строке больше 5 символов, выводит её на экран 100 раз. Если в строке 5 символов или меньше, то функция ничего не делает.

Начнём писать функцию:

def shouter(string):

Как вы наверное догадались, чтобы вывести строку 100 раз на экран, понадобится цикл. Но это нужно только в случае, если строка больше 5 букв.

Значит, нужно начать с создания условия:

def shouter(string):
    length = len(string)
    if length > 5:

В блоке после if будет код, который исполнится только при условии length > 5. Здесь будет цикл для повторения 100 раз.

Напомним стратегию для создания подобных циклов:

  1. Создать счётчик и задать ему начальное значение.
  2. Сделать цикл, который будет повторяться пока счётчик не дошёл до какого-то конечного значения.
  3. В теле цикла выполнять нужное действие (в нашем случае — вывод на экран) и обновлять счётчик.

Нам нужно 100 повторений, поэтому сделаем счётчик со значением 0 и будем увеличивать его на 1 каждый шаг — и так до тех пор, пока счётчик не станет равным 100.

def shouter(string):
    length = len(string)
    if length > 5:
        counter = 0
        while counter != 100:
            print(string, end='')  # про "end" см. ниже
            counter += 1

counter += 1 это увеличение счётчика на 1.

Запустим:

shouter('HELLO!')
HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!

Заметьте, мы указали параметр end при вызове print. Так вот, end='' говорит функции print, что после печати аргументов не нужно переводить строку. Поэтому наша программа вывела весь текст одной длинной строкой. Если же значение для end не указано явно, используется end='\n', поэтому по умолчанию каждый вызов print производит печать на новой строке.

А теперь давайте модифицируем функцию так, чтобы она возвращала результат, а не выводила его на экран. Воспользуемся тем же приёмом, что был в функции для переворота строки: создадим пустую строку result и будем её наполнять в цикле, а потом вернём из функции.

def shouter(string):
    length = len(string)
    result = ''
    if length > 5:
        counter = 0
        while counter != 100:
            result += string
            counter += 1
    return result

Задание

Модифицируйте последний вариант функции shouter, добавив такие условия:

  1. Если длина строки больше 0 и меньше 5, то вернуть оригинальную строку без повторений.
  2. Если длина строки ровно 5 символов, то вернуть строку, повторенную 10 раз.

Условие «длина больше 5, то вернуть строку, повторенную 100 раз» должно сохраниться.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

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