Файл: Лабораторный практикум 4.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.01.2024

Просмотров: 61

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Министерство образования Российской Федерации

Негосударственное образовательное частное учреждение высшего образования «Московский финансово-промышленный университет «Синергия»

Кафедра Информационного менеджмента и информационно-коммуникационных технологий имени профессора В.В. Дика

Тема «Функции, модули и пакеты».
Лабораторный практикум №4

«Работа со строками, форматирование строк»
По дисциплине «Программирование на языке Python»

Направление подготовки:

09.03.02 Информационные системы и технологии

Профиль подготовки:

Разработка, сопровождение и обеспечение безопасности информационных систем

Квалификация выпускника:

Бакалавр

Форма обучения:

очная



Москва 2023
Лабораторный практикум №4

«Работа со строками, форматирование строк»
Цель работы: познакомиться с методами работы со строками на языке Python; овладеть навыками составления линейных алгоритмов на языке программирования Python с использованием строковых данных; уметь применять функции и методы строк при обработке строковых данных; применить на практике операции и методы обработки строк.

Ход работы:

  1. Ознакомиться (прочитать) теоретический материал.

  2. Изучить Требования к защите отчетной документации/ Защита результатов выполнения лабораторных работ

  3. Выполнение заданий лабораторной работы/составление отчета по лабораторной работе.

  4. Ответы на контрольные вопросы, выводы по проделанной работе.

  5. Защита отчета по лабораторному практикуму


Теоретический материал
tk.ulstu.ru/video.php#video

  • #8. Введение в строки. Базовые операции над строками

  • #9. Знакомство с индексами и срезами строк

  • #10. Основные методы строк

  • #11. Спецсимволы, экранирование символов, row-строки

  • #12. Форматирование строк: метод format и F-строки


Строки являются упорядоченными последовательностями символов. Длина строки в Pythonе ограничена лишь объемом оперативной памяти компьютера.


Строки относятся к неизменяемым типам данных, т.е. можно получить символ по индексу, но изменить символ в строке нельзя. Поэтому практически все строковые методы возвращают в качестве значения новую строку.

Строковый тип данных применяется для хранения текстовой информации и произвольных значений байтов. Строки относятся к так называемым последовательностям — позиционно упорядоченным коллекциям объектов, в которых объекты располагаются в порядке слева направо, сохраняют свои позиции и могут извлекаться по их относительному номеру.

Таким образом строки представляют собой последовательность из односимвольных строк (также к последовательностям в Python относятся списки и кортежи) и поддерживают операции, которые предполагают наличие позиционного порядка среди элементов: индексация, срез, конкатенация и повторение.

Язык программирования Python поддерживает три строковых типа: str, byte, bytemassivay. Однако именно тип str мы будем называть словом «строка». А типы byte, bytemassivay будем использовать для хранения бинарных (двоичных данных), например, изображений, а также для промежуточного хранения текстовых данных.

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

>>> winter = ’зима’ # пример верного оформления строки

>>> summer = ”лето” # пример верного оформления строки

>>> autumn = ’осень” # пример неверного оформления строки

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

>>> winter[1] # вернет второй символ строки «и»

Чтобы извлечь подстроку, можно использовать оператор сечения: s[i:j:k].

Операции со строками





Для примера используем переменную строкового типа my_str, инициализировав ее значением «Test»:

my_str = 'Test' # также можно инициализировать переменную через

# двойные кавычки my_str = " Test"

print(len(my_str)) # Длина строки = 4

print(my_str[0]) # Т

# Выводим первый элемент my_str, так как индексация

# начинается с нуля

Индексация в Python представляет собой смещение относительно первого (нулевого) элемента последовательности и может быть как положительной (от 0 до п - 1), так и отрицательной (от -1 до -п):



print(my_str[-l]) # Первый элемент с конца = t

print(my_str[-3]) # Третий элемент с конца = е
Помимо простой позиционной индексации, последовательности поддерживают ее более общую форму — срез. Срез представляет собой способ извлечения целой части за один шаг. В общем виде концепцию среза можно представить как Такая форма записи обозначает, что будут извлечены значения из последовательности X, начиная с позиции i до позиции j, не включая ее (т. е. j- 1):

print(my_str[l:3]) # es

# Срез my_str со смещения 1 до 2 включительно (не 3)

При использовании среза его левая граница по умолчанию принимается равной нулю, а правая — длине нарезаемой последовательности (то есть длине строки). Это приводит к нескольким распространенным вариантам применения:

# Вся строка my_str

print(my_str[:]) # Test

# Всё после первого элемента

print(my_str[l:]) # est

# Кроме последнего элемента

print(my_str[0:3]) # Tes

# То же, что и my_str[0:3]

print(my_str[:3]) # Tes

# Аналогична предыдущей записи print(my_str[:-1]) # Tes

Конкатенация и повторение последовательностей производятся следующим образом:

#Конкатенация (значение my_str не изменяется)

print(my_str+'Ко') # TestKo

# Повторение (значение my_str не изменяется)

print(my_str * 3) # TestTestTest

# Конкатенация

print([1,2,3] + [4,5]) # [1, 2, 3, 4, 5]

# Повторение

print([l, 2, 3] * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
Методы, которые специфичны для строкового типа данных и не распространяются на последовательности. Данные методы возвращают измененную строку, но не модифицируют ту, над которой производится операция. К ним относят:

find;

replace;

split;

upper;

rstrip и m. d.
Рассмотрим их принцип работы:

my_str = 'Test'

# Поиск смещения подстроки в my_str

print(my_str.find('es')) # 1

# Замена вхождения подстроки в my_str

# другой подстрокой

print(my_str.replace('es', ’ XFQ')) # T XFQt

print(my_str) # Test

line = 'ffff,ttt,nn,d' # Разбить строку по разделителю ', ' в список подстрок

print(line.split(','))

[’ffff’, 'ttt', 'nn', 'd']

# Преобразовать символы строки в верхний регистр

print(my_str.upper()) # TEST

line = 'ffff,ttt,nn,d\n' # Удалить пробельные символы с правой стороны

print(line.rstrip())# ffff ,ttt ,nn ,d

Методы можно чередовать:

# Замена подстроки в строке с последующим её

#разделением в список

print(line.replace('tt', 'XFQ').split(','))

['ffff 'XFQt 'nn 'd\n']
Функции для работы со строками



Методы для работы со строками









Пример задания.
Вариант 0

Задача 1. Проверить, будет ли строка читаться одинаково справа налево и слева направо (т. е. является ли она палиндромом).

Решение

  1. Сначала введём строку командой: s=input('Введите строку ').

  2. Затем определим логическую переменную flag и присвоим ей значение 1: flag=1.

  3. Для начала в введённой строке нужно удалить пробелы. Для этого воспользуемся циклической конструкцией for, которая выполнится столько раз, какую имеет длину строка. Длину строки определим функцией len(s).

  4. В теле цикла будем проверять следующее условие: s[i]!=' '. Данное логическое выражение будет истинно в том случае, если i-ый элемент строки не будет равен пробелу, тогда выполнится команда следующая после двоеточия: string+=s[i].

  5. К сроке string, которая была объявлена в начале программы, будет добавляться посимвольно строка s, но уже без пробелов.

  6. Для проверки строки на "палиндром" воспользуемся циклической конструкцией for.

  7. Длина половины строки находится делением нацело на 2. Если количество символов нечетно, то стоящий в середине не учитывается, т.к. его сравниваемая пара - он сам.

  8. Количество повторов цикла равно длине половины строки. Длину строки определим функцией len(s), где аргумент введённая нами строка s. Зная длину строки, можно вычислить количество повторов цикла. Для этого целочисленно разделим длину строки на 2: len(s)//2.

  9. Для задания диапазона для цикла используем функцию range(), в которой аргументом будет являться половина длины строки: range(len(s//2 )).

for i in range(len(s//2 )).

  1. Если символ с индексом i не равен "симметричному" символу с конца строки (который находится путеминдексации с конца)

if s[i] != s[-1-i],

то переменной flag присваивается значение 0 и происходит выход из цикла командой break.

  1. Далее, при помощи условной конструкции if-else в зависимости от значения flag либо - 0, либо -1 выводится сообщение, что строка палиндром, либо нет.

Пример выполнения программы на Python



Результат выполнения программы


Задача 2. Создать строку «Лист». Распаковать последовательность в переменные, определить их тип, сделать обратное преобразование из переменных в строку.

Код программы:

my_str = 'Лист' # Создаем строку по заданному условию

print (my_str) # Выводим созданную строку на экран

a, b, c, d = my_str # Присваиваем каждой из новых переменных соответствующую букву из слова.

#Количество новых переменных и букв в созданной строке должны совпадать!!

print(a, b, c, d) # Выводим переменные на экран

print(type (a), type (b), type (c), type (d)) # Определяем тип каждой переменной

my_str = a + b + c + d # Выполняем обратное преобразование: получаем из переменных строку

print(my_str) # Выводим строку на экран




Рис. 1. Изображение рабочего кода программы в https://www.online-python.com/



Рис. 2. Изображение теста программы в https://www.online-python.com/

Перевод двоичного числа в десятичное


Двоичное число, введенное пользователем программы, преобразовать в десятичное число. Результат вывести на экран.

Алгоритм решения задачи:

  1. Двоичное число хранится в программе в виде строки.

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

  3. В цикле перебирается каждый символ строки.

    1. Символ преобразовывается в число.

    2. Находится степень, в которую должна возводиться двойка. Для первого символа она на единицу меньше длины строки. Для каждого следующего уменьшается на единицу.

    3. Если число разряда не равно 0, то

    4. возвести двойку в степень,

    5. а результат добавить к десятичному числу.

Функция возведения двойки в заданную степень:

  1. Получить степень.

  2. Присвоить результату функции значение 1.

  3. Умножать результат на 2, пока не будет достигнута заданная степень.


Использование строк для решения задач защиты информации. Криптографический алгоритм замены Юлия Цезаря