• burger-icon

    Шаг 3. Работа со строчками

    Баллов за прохождение: 2

    Сложение строк

    На прошлом уроке мы уже столкнулись с конкатенацией. Так называется сложение двух строк:

    print('I love ' + 'Python') 

    Это всё является одним аргументом. Мы можем конкатенировать и при этом передавать несколько аргументов:

    print('Hello ' + 'World.', 'My name is ' + 'John')

    В этом случае было передано 2 аргумента. В каждом аргументе происходит конкатенация двух строк. Это довольно простая тема.

     

    Форматирование строк

    Представлен следующий код:

    name = 'John'
    age = 25
    height = 183.45
    
    print('My name is', name, 'My age is', age, 'My height is', height)

    Функция print() выглядит некрасиво. Много кавычек и запятых. Также у нас нет возможности форматировать строчку как нам угодно, например после каждого предложения подставить точку. В этом случае нам может помочь форматирование строк при помощь инструкции f:

    name = 'John'
    age = 25
    height = 183.45
    
    print(f'My name is {name}. My age is {age}. My height is {height}')

    Вот теперь код выглядит куда круче!

    Кавычки открываются только один раз. Перед открытием кавычек была поставлена буква f, что означает format, т.е форматирование. После этого в строчке появляется возможность подставлять переменные в фигурных скобках. 

    F-строчки (f-string) были введены в Python версии 3.6. Это самый удобный и современный способ форматирования строк. Они позволяют включать выражения прямо в строчку, используя фигурные скобки {}.

    Пример других выражений:

    print(f"Результат: {2*37}")
    
    value = 'Строчка'
    print(f"Вы ввели: {value.lower()}")

    Старые методы форматирования

    Старые - не значит плохие :)

    Метод .format()

    f-строчки раньше выглядели следующим образом:

    print("My name is {fname}, I'm {age}".format(fname='John', age=36))

    Метод .format() также используется в Python для форматирования строк. Он позволяет вставлять определенные значения в строку-заполнитель, которая определяется с помощью фигурных скобок {}. Метод .format() возвращает отформатированную строку.

    Более сложные вариации использования этого метода мы рассмотрим позже.

    Оператор %

    Форматирование строк с помощью оператора % в Python позволяет вставлять определенные значения в строку-заполнитель, которая также определяется с помощью фигурных скобок {}. Этот способ форматирования был взаимствован из функции printf языка С (олдфаги поймут).

    Пример использования:

    print('Hello, %s!' % 'John')
    # Вывод: Hello, John!

    Если требуется несколько аргументов, то значеним будет являться кортеж со строками подстановки:

    print('%d %s, %d %s') % (1, 2, 3, 4))

    Также есть и более усложнённые варианты использования этого оператора с которыми вы тоже познакомитесь в процессе обучения.

    Сейчас не стоит засорять голову и досконально разбираться в этих методах. Они представлены для общего ознакомления и начитанности кода.

    Управляющие последовательности

    print('Янв\nФев\nМар\nАпр\nМай\nИюн\nИюл\nАвг\nСен\nОкт\nНоя\nДек')

    В коде выше вы можете заметить новые возможности форматирования строк. Здесь был указан символ \n (обратный слэш и английская n). Все, что делают эти два символа - это помещают символ перехода на новые строку в соответствующей позиции.

    Применение символа \ (Обратный слэш) - позволяет помещать специальные символы в строку. Существует много так называемых "управляющих (или escape-) последовательностей".

    Среди них большое значение имеет управляющая последовательность для экранирования одинарных (') или двойных кавычек ("). Допустим, у вас есть строчка:

    print("Я "понимаю" Джона") # Ошибка!

    В таком случае Python запутался, так как кавычка перед словом "понимаю заканчивает строку. В таком случае нужен способ сообщить Python, что кавычка не закрывающая:

    print("Я \"понимаю\" Джона") # Правильно!

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

    Управляющая последовательность Представление
    \\ Обратный слеш (\)
    \' Одиночная кавычка (')
    \" Двойная кавычка (")
    \a ASCII-символ звонка (BEL)
    \b ASCII-символ возврата (BS)
    \f ASCII-символ перевода страницы (FF)
    \n ASCII-символ новой строки (LF)
    \N{имя} Символ с именем из базы данных Юникод
    \r ASCII-символ возврата каретки (CR)
    \t ASCII-символ табуляции (TAB)
    \uxxxx 16-битный символ Юникода со значением xxxx
    \Uxxxxxxxx 32-битный символ Юникода со значением xxxxxxxx
    \v ASCII-символ отступа по вертикали (VT)
    \ooo Символ ASCII в восьмеричной нотации ооо
    \xhh

    Символ ASCII в шестнадцатеричной нотации hh

    Методы и функции для работы со строчками

    Метод или функция Назначение метода
    len(s) Длина строки
    s.find(str, [start],[end]) Поиск подстроки. Возвращает индекс первого вхождения или -1
    s.rfind(str, [start],[end]) Поиск подстроки. Возвращает индекс последнего вхождения или -1
    s.index(str, [start],[end]) Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError
    s.rindex(str, [start],[end]) Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError
     s.replace(изначальная строка, замена[, maxcount]) Замена изначальной строки на замену. maxcount ограничивает количество замен
     s.split(символ) Разбиение строки на список по указанному символу
     s.isdigit() Содержит ли строка цифры
     s.isalpha() Содержит ли строка буквы
     s.isalnum() Содержит ли строка цифры или буквы
     s.islower() Написана ли строка в нижнем регистре
    s.isupper() Написана ли строка в верхнем регистре
    s.istitle() Начинаются ли слова в строке с заглавной буквы
     s.upper() Преобразовать строчку к верхнему регистру
     s.lower() Преобразовать строчку к нижнему регистру
     s.capitalize() Переводит первый символ строки в верхний регистр, а все остальные в нижний
     s.strip(s) Удаление пробельных символов в начале и в конце строки
     s.rstrip(s) Удаление пробельных символов в конце строки
    s.lstrip() Удаление пробельных символов в начале строки

     


    Задача:

    Пользователь вводит имя, фамилию и отчество, каждое слово с новой строки. Ваша задача вывести инициалы в формате Ф.И.О.

    Пример ввода-вывода

    Ввод:
    Александр
    Пушкин
    Сергеевич

    Вывод:
    П.А.С

    Для решения задачи, Зарегистрируйтесь или Войдите на сайт.