Лабораторная работа № 3 Строковые величины

ПредупреждениеНеобходимые файлы

Перед началом работы, cкачайте файл с заданиями, выполняемыми без компьютера.

Теоретические сведения

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

Инструкции и операторы для обработки строковых значений находятся в следующей таблице:

Таблица 1: Инструкции и операторы для обработки строк
Инструкции и операторы Назначение
+ Конкатенация
* Повторение
<строка>[] Индексирование
<строка>[ : ] Срез
len(<строка>) Длина строки
in, not in Нахождение в строке
for <символ> in <строка> Перебор символов

Методы класса str

Класс str обладает рядом методов, которые упрощают обработку строк.

Таблица 2: Некоторые методы класса str
Метод Назначение
s.count(sub) Возвращает количество вхождений подстроки sub в строку s
s.find(sub) Возвращает индекс первого вхождения подстроки sub в строку s
s.replace(old, new) Заменяет подстроку old на new; возвращает новую строку
s.upper() Преобразование всех символов в прописные; возвращает новую строку
s.lower() Преобразование всех символов в строчные; возвращает новую строку
s.isdigit() Возвращает True, если в строке s хранятся только десятичные цифры. Иначе вернёт False.
s.alpha() Возвращает True, если в строке s хранятся только буквы. Иначе вернёт False.

Задания для самостоятельной работы

Задание 1. Операции над строками

Запишите в таблице результат работы программы вашего варианта. В кавычках записаны только кириллические буквы.

st = "Программирование"
print(st[4])
print(st[2:7])
print('р' not in st)
print(len(st[5:]))
print(st[0:2] + st[10] + st[4:6])
st = "Информатика"
print(st[6])
print(st[3:8])
print('ф' in st)
print(len(st[:5]))
print(st[2:4] + st[0] + st[7:9])
st = "Программист"
print(st[3])
print(st[1:4])
print('т' in st)
print(len(st[2:]))
print(st[:2] + st[4] + st[3])
st = "Кодирование"
print(st[5])
print(st[1:6])
print('а' in st)
print(len(st[:4]))
print(st[6:8] + st[0] + st[10])
st = "Алгоритмизация"
print(st[7])
print(st[0:4])
print('г' in st)
print(len(st[3:]))
print(st[1:3] + st[5] + st[2:4])
st = "Синтаксис"
print(st[2])
print(st[5:9])
print('к' not in st)
print(len(st[:6]))
print(st[0] + st[6:8] + st[3])
st = "Переменная"
print(st[8])
print(st[4:9])
print('м' in st)
print(len(st[2:]))
print(st[5:7] + st[1] + st[0])
st = "Функция"
print(st[0])
print(st[3:6])
print('ц' in st)
print(len(st[:5]))
print(st[4:6] + st[2] + st[1:3])
st = "Строковый тип"
print(st[4])
print(st[1:5])
print('о' in st)
print(len(st[3:]))
print(st[2] + st[5] + st[0:2])
st = "Списки данных"
print(st[3])
print(st[0:3])
print('с' not in st)
print(len(st[:4]))
print(st[4:] + st[1] + st[2])
st = "Блок-схема"
print(st[2])
print(st[1:4])
print('с' in st)
print(len(st[1:]))
print(st[3] + st[:1] + st[2])
st = "Модульность"
print(st[5])
print(st[2:5])
print('у' in st)
print(len(st[:3]))
print(st[1:3] + st[4] + st[0])
st = "Область видимости"
print(st[1])
print(st[4:7])
print('с' in st)
print(len(st[2:]))
print(st[0] + st[5] + st[3:5])
st = "Видимость"
print(st[6])
print(st[3:7])
print('м' not in st)
print(len(st[:5]))
print(st[2:4] + st[7] + st[1])

Используйте Таблицу 1, если вам нужна подсказка.

Задание 2. Методы класса str

Запишите в таблице результат работы программы вашего варианта.

st = "Python 3.9"
print(st.count('o'))
print(st.upper())
print(st.find("on"))
print(st.replace("3", "2.7"))
print(st)
print(st[-2].isdigit())
st = "Программа 2024"
print(st.count('а'))
print(st.lower())
print(st.find("гр"))
print(st.replace("2024", "2025"))
print(st)
print(st[11].isdigit())
st = "Строка 123"
print(st.count('к'))
print(st.upper())
print(st.find("ока"))
print(st.replace("123", "456"))
print(st)
print(st[2].isalpha())
st = "Задание 5б"
print(st.count('а'))
print(st.lower())
print(st.find("ни"))
print(st.replace("5б", "6"))
print(st)
print(st[-2].isalpha())
st = "Код 777"
print(st.count('7'))
print(st.upper())
print(st.find("од"))
print(st.replace("777", "999"))
print(st)
print(st[3].isdigit())
st = "Текст 42abc"
print(st.count('т'))
print(st.lower())
print(st.find("кс"))
print(st.replace("abc", "xyz"))
print(st)
print(st[7].isalpha())
st = "Данные 3.14"
print(st.count('н'))
print(st.upper())
print(st.find("ные"))
print(st.replace("3.14", "2.71"))
print(st)
print(st[9].isdigit())
st = "Файл 10кб"
print(st.count('л'))
print(st.lower())
print(st.find("ай"))
print(st.replace("10кб", "20мб"))
print(st)
print(st[-4].isalpha())
st = "Список 100"
print(st.count('с'))
print(st.upper())
print(st.find("ок"))
print(st.replace("100", "200"))
print(st)
print(st[6].isdigit())
st = "Массив 5d"
print(st.count('а'))
print(st.lower())
print(st.find("ив"))
print(st.replace("5d", "3d"))
print(st)
print(st[0].isalpha())
st = "Цикл 99"
print(st.count('ц'))
print(st.upper())
print(st.find("ик"))
print(st.replace("99", "100"))
print(st)
print(st[-2].isdigit())
st = "Объект 2а"
print(st.count('е'))
print(st.lower())
print(st.find("Об"))
print(st.replace("2а", "3б"))
print(st)
print(st[1].isalpha())
st = "Метод 404"
print(st.count('о'))
print(st.upper())
print(st.find("то"))
print(st.replace("404", "200"))
print(st)
print(st[-3].isdigit())
st = "Функция 1b"
print(st.count('ц'))
print(st.lower())
print(st.find("нк"))
print(st.replace("1b", "2c"))
print(st)
print(st[-5].isalpha())

Используйте Таблицу 2, если вам нужна подсказка.

Задание 3. Сбалансированная строка (sam03.py)

Две строки s1 и s2 назовём сбалансированными, если все символы строки s1 присутствуют в строке s2. Порядок символов не учитывается. Напишите программу, которая определит являются ли две строки, введённые с клавиатуры, сбалансированными. Ответ должен быть записан в следующем виде - либо “Строки сбалансированы” либо “Баланс нарушен”.

  1. Запишите в таблицу варианты входных тестовых данных и ожидаемый результат. Запишите минимум три теста для алгоритма. Рассмотрите различные комбинации входных данных.

  2. Запишите код решения задачи по следующей блок-схеме. В блоках, выделенных зелёным цветом, замените прочерки на необходимые инструкции и выражения.

Рисунок 1
1
2

Задание 4. Микс (sam04.py)

Составьте программу, содержащую функцию mix(s1, s2). Функция принимает в качестве параметров две строки. Функция возвращает новую строку. Символы в новую строку добавляются по следующему правилу: в начале берётся первый символ строки s1, затем последний символ строки s2. После этого берётся второй символ строки s1 и предпоследний символ строки s2. Процесс повторяется, пока в строках не закончатся символы.

Используйте следующей шаблон. Замените прочерки на необходимые инструкции и выражения:

def mix(s1, s2):
    answ = "" # строка-аккумулятор: в ней будем "накапливать" решение
    for i in range(0, _____ ):
        answ  = answ + ____ # символ из строки s1
        answ  = answ + ____ # символ из строки s2
    return answ

# Вызов функции, тестирование
print(mix("Abc", "Xyz"))

Тестовые данные:

s1 s2 mix(s1, s2)
"Abc" "Xyz" "AzbycX"
"" "" ""
"A" "Б" "АБ"
"Функция" "Очередь" "ФьуднекрцеичяО"

Задание 5 (sam05.py)

Решите следующую задачу вашего варианта.

Дана строка. Определите общее количество символов + и - в ней.

Дана строка. Определите, какой символ в ней встречается раньше: y или n. Если какого-то из символов нет, вывести сообщение об этом.

Дана строка. Найдите наибольшее количество подряд идущих пробелов в нем.

В данной строке найти количество цифр.

Дана строка. Найдите наибольшее количество идущих подряд цифр.

Дана строка. Найти сумму имеющихся в нем цифр.

Дана строка. Показать номера символов, совпадающих с последним символом строки.

Дана строка. Определите общее количество символов + и - в ней.

Дана строка. Определите, какой символ в ней встречается раньше: y или n. Если какого-то из символов нет, вывести сообщение об этом.

Дана строка. Найдите наибольшее количество подряд идущих пробелов в нем.

В данной строке найти количество цифр.

Дана строка. Найдите наибольшее количество идущих подряд цифр.

Дана строка. Найти сумму имеющихся в нем цифр.

Дана строка. Показать номера символов, совпадающих с последним символом строки.

Задание 6* (sam06.py)

Решите следующую задачу вашего варианта.

Даны две строки. Определите, можно ли первую строку получить из второй циклическим сдвигом.

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

Пример:

451
четыреста пятьдесят один

С клавиатуры вводится строка, которая содержит имя переменной в camelCase. Преобразуйте имя переменной в snake_case.

Дана строка, которая содержит число, записанное римскими цифрами. Запишите это число в десятичной системе счисления.

Дана строка, которая содержит квадратное уравнение, состоящее из цифр, символа умножения *, символа x неизвестной, символов +,-, =. Выведите на экран значения коэффициентов a, b и с данного уравнения.

Реализуйте метод, осуществляющий сжатие строки на основе счетчика повторяющихся символов. Например, строка aaabbcccc должна превратиться в a3b2c5.

Расстояние между двумя словами равной длины - количество букв, в которых различаются эти слова. Определите расстояние для двух строк, вводимых с клавиатуры.

Даны две строки. Определите, можно ли первую строку получить из второй циклическим сдвигом.

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

Пример:

451
четыреста пятьдесят один

С клавиатуры вводится строка, которая содержит имя переменной в camelCase. Преобразуйте имя переменной в snake_case.

Дана строка, которая содержит число, записанное римскими цифрами. Запишите это число в десятичной системе счисления.

Дана строка, которая содержит квадратное уравнение, состоящее из цифр, символа умножения *, символа x неизвестной, символов +,-, =. Выведите на экран значения коэффициентов a, b и с данного уравнения.

Реализуйте метод, осуществляющий сжатие строки на основе счетчика повторяющихся символов. Например, строка aaabbcccc должна превратиться в a3b2c5.

Расстояние между двумя словами равной длины - количество букв, в которых различаются эти слова. Определите расстояние для двух строк, вводимых с клавиатуры.