Главная страница
Навигация по странице:

  • 2. Базовые операции со строками

  • 3. Методы строк

  • 4. Методы

  • 6. Практические задания

  • Задача 4.

  • ЛР_4_Строки. Лабораторная работа 4 Строки


    Скачать 70.06 Kb.
    НазваниеЛабораторная работа 4 Строки
    Дата30.03.2023
    Размер70.06 Kb.
    Формат файлаdocx
    Имя файлаЛР_4_Строки.docx
    ТипЛабораторная работа
    #1027115


    Лабораторная работа 4

    «Строки»

    1. Ввод и вывод строки

    Строки в языке Python являются объектами, состоящими из последовательности символов. Наравне с другими типами данных строка является базовым типом и обозначается str().

    Вспомним, что строка считывается с клавиатуры функцией input(). В коде строковое значение записывается в кавычках (двойных или одинарных). Разницы между строками с одинарными и двойными кавычками нет – это одно и то же.

    Рассмотрим пример, когда необходимо вывести на экран автора и название книги, например, Л.Н.Толстой «Война и мир». В данной задаче возникает необходимость вывести кавычки, как один из символов строки, это можно сделать несколькими способами:

    #разный тип кавычек

    print('Л.Н.Толстой "Война и мир"')  

    # или

    print("Л.Н.Толстой 'Война и мир'")
    # экранирование кавычек одного типа

    print("Л.Н.Толстой \"Война и мир\"")

    # или

    print('Л.Н.Толстой \'Война и мир\'')

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

    Результат работы кода в рассмотренном примере, будет следующий:



    2. Базовые операции со строками

    Базовыми операциями работы со строками можно считать:

    • конкатенацию (сложение);

    a = 'Hello '

    b = 'world!'

    print(a + b)



    • дублирование строки;

    a = 'Hi! '

    print(a * 3)



    • вычисление длины строки;

    a = 'Hi! I am human.'

    print(len(a))



    • доступ по индексу (важно помнить, что нумерация индексов начинается с 0);

    Однако нужно понимать, что в Python нет отдельного типа для символов строки. Каждый объект, который получается в результате среза S[i] – это тоже строка.

    a = 'Hi! I am human.'

    print(a[0], a[4])



    В Python предусмотрена возможность получить доступ и по отрицательному индексу. В таком случае отсчет будет вестись от конца строки:

    a = 'Hi! I am human.'

    print(a[-1], a[-4])



    • числовое значение символа;

    Поскольку строка содержит символы Unicode, то с помощью функции ord() можно получить числовое значение для символа в кодировке Unicode. Функция ord() является обратной к chr().

    a = 'H'

    print(ord(a))

    b = '€'

    print(ord(b))

    print(chr(8364))



    • извлечение среза.

    Срезы позволяют извлекать из строки фрагменты. Можно выделить три типа срезов:

    string[:end] – извлекается последовательность символов начиная с 0 индекса по индекс end;

    string[start:end] – извлекается последовательность символов начиная с индекса start по индекс end;

    string[start:end:step] – извлекается последовательность символов начиная с индекса start по индекс end через шаг step.

    text = 'Погода была прекрасная! Ветер стих.'

    print(text[:6])     #построка с 0 по 6 символ

    print(text[7:11])   #подстрока с 7 по 11 символ

    print(text[::-1])   #строка в обратном порядке

    print(text[8:11:2]) #подстрока с 7 по 11 символ 

                        #с шагом 2 (через 1 символ)

    Срезы можно получать и от отрицательных индексов, тогда отсчет начинается с конца строки. Результат выполнения кода будет:



    При чем, даже если указать второй индекс end большим, чем размер строки или отрицательным, ошибки не возникнет, например, если прописать text[11:999] на экран будет выведена просто вся строка с 12 символа и до конца. А в случае, если указать второй индекс отрицательным, тогда последний символ просто не будет учтен, но результат будет аналогичным.

    text = 'Погода была прекрасная! Ветер стих.'

    print(text[12:999])

    print(text[12:-1])



    3. Методы строк

    • isalpha()– проверяет, что строка состоит только из алфавитных символов;

    • isdigit()– проверяет, что все символы строки являются цифрами;

    • islower()– проверяет, что строка состоит только из символов в нижнем

    регистре;

    • isupper()– проверяет, что все символы строки в верхнем регистре;

    • lower()– переводит строку в нижний регистр;

    • upper()– переводит строку в верхний регистр;

    • title()– начальные символы всех слов в строке переводятся в верхний

    регистр;

    • capitalize()– переводит первую букву в верхний регистр, остальных – в

    нижний;

    • rstrip()– удаляет конечные пробелы из строки;

    • find(x, start, end) – возвращает индекс первого вхождения подстроки

    в строку или -1 при отсутствии;

    • rfind(x, start, end) – возвращает индекс последнего вхождения

    подстроки в строку или -1 при отсутствии;

    • replace(y, x) – заменяет все вхождения одной подстроки y на другую x

    внутри строки;

    • count(y, x) – подсчитывает число вхождений одной строки y в другую x.

    Рассмотрим задачу, в которой необходимо считать строку с клавиатуры. Записать первое слово в строке с заглавной буквы, а остальные сделать строчными. Далее подсчитать сколько букв «а» введено в строке и заменить их все символом «*». Также нужно найти индекс, когда буква «м» встречается в первый раз от 10 индекса строки и до конца.

    st = input()

    print(st.capitalize())    #первое слово с заглавной буквы

    print(st.count('а'))      #подсчет количества "а"

    print(st.replace('а', '*')) #замена "а" на "*"

    print(st.find('м', 10))     #поиск индекса "м" 

    #от 10 индекса



    4. Методы format() и f-строки

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

    '{0} - {1} равно 1 - это {2}'.format('Один', 2, True)



    Другой способ передачи значений внутрь строки – это f-строки. С их помощью можно использовать встроенные выражения внутри строки. В отличие от прошлого метода код более читаем, математические вычисления можно прописывать явно прямо внутри фигурных скобок, внутрь которых передаются переменные:

    a = 5

    b = 10

    st = 'равно'

    f'Пять плюс десять {st} {a + b} и не {st} {2 * (a + b)}.'



    6. Практические задания

    Задача 1. Дана строка введенная пользователем, состоящая из слов, разделенных пробелами.

    а) подсчитайте число символов в строке;

    б) выведите седьмой символ строки;

    в) выведите строку в обратном порядке;

    г) выведите пять последних символов строки;

    д*) подсчитайте количество слов в строке;

    е*) выведите все символы с нечетными индексами.
    Задача 2. Дана строка, состоящая из нескольких слов. Необходимо поменять крайние слова местами (первое и последнее) и вывести результат на экран. При решении этой задачи не используйте циклы и условную инструкцию.
    Задача 3. Пользователь вводит две строки с клавиатуры. В первой строке все символы нужно сделать заглавными, во второй – найти число вхождений буквосочетания «ол» и заменили его на букву «а». После чего вторую строку записать в конец первой.
    Задача 4. Пользователь вводит строку с клавиатуры. Из исходной строки необходимо удалить все символы с индексами кратными 7.
    Задача 5. Пользователь вводит две строки: исходную n и символ m, вхождение которого нужно проверить внутри исходной строки. Если m встречается внутри n один раз, то необходимо вывести его индекс. Если символ встречается более 1 раза, то необходимо вывести число его первого и последнего вхождения. В случае, если символ не встречается внутри строки, то результат не выводится.
    Задача 6. Дана строка, состоящая из чисел. Необходимо получить первые 6 символов этой строк и вывести их таким образом, чтобы составить из них пример знакопеременного выражения формата: «a+b-c+d-e+f» . Используя f-строки запишите знакопеременное выражение и вычислите его.
    Задача 7*. Напишите программу, которая по данному числу n(от 1 до 9) выводит на экран n пингвинов. Изображение одного пингвина имеет размер 5×9 символов, между двумя соседними пингвинами также имеется пустой (из пробелов) столбец. Разрешается вывести пустой столбец после последнего пингвина. Для упрощения рисования скопируйте пингвина из примера. Учтите, что вывод данных на экран производится построчно, а не попингвинно.

    Указание к решению: в Python символ обратного слэша “\” в текстовых строках имеет специальное значение. Чтобы включить в состав текстовой строки такой символ, его нужно повторить дважды. Например, для вывода на экран одного такого символа можно использовать такой код: print("\\").

    Пример пингвина:

    _

    _

    (o o)

    / V \

    /( _ )\

    ^^ ^^

    Задача 8*. Дана строка, содержащая фразу из букв, пробелов и знаков препинания. Определить, является ли она палиндромом. Если да, вывести YES , иначе вывести NO . Палиндром считается строка, которая читается одинаково как слева направо, так и справа налево (пробелы и другие небуквенные символы игнорируются). Например, О, лета тело!, А роза упала на лапу Азора.

    Примерные этапы работы алгоритма:

    1. Чтение строки с клавиатуры;

    2. Удаление лишних символов (пробелы и знаки препинания);

    3. Приведение к одному регистру;

    4. Проверка на палиндромность;

    5. Печать результата.


    написать администратору сайта