Лабораторная работа № 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)

С клавиатуры вводится строка. Из цифр введённой строки составьте число и выведите его на экран. Если цифр в исходной строке нет, выведите сообщение "В строке нет цифр".

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

Введите строку: <{а1бв23гд4}> ++enter++
Число: 1234
Введите строку: <{число}> ++enter++
В строке нет цифр
Использовано попыток: 0
В коде есть ошибка.

Блок-схема решения

Блок-схема решения

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

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

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

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

Рисунок 1
1
2

Задание 5. Микс (sam05.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" "Б" "АБ"
"Функция" "Очередь" "ФьуднекрцеичяО"

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

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

Напишите программу, которая преобразует строку с датой из формата мм/дд/гггг в дд.мм.гггг. Если номер дня или месяца состоит из одной цифры, при вводе слева записывается ноль.

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

мм/дд/гггг: <{03/18/2026}> ++enter++ 
18.03.2026

Пользователь вводит номер телефона в виде строки из 9 цифр без пробелов и других символов. Сформируйте и выведите номер в формате +375 (XX) XXX-XX-XX.

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

Номер телефона: <{291234567}> ++enter++
+375 (29) 123-45-67

С клавиатуры вводятся имя, фамилия и отчество. Выведите на экран текст с инициалами.

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

Фамилия: <{Алферов}> ++enter++
Имя: <{Жорес}> ++enter++
Отчество: <{Иванович}> ++enter++
Ж.И. Алферов

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

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

Строка: <{Группа 240424. Задания для 240424.}> ++enter++
Заменить: <{240424}> ++enter++
На: <{240425}> ++enter++
Новый текст: Группа 240425. Задания для 240425.
Количество замен: 2

Пользователь вводит имя, фамилию и год рождения. Сформируйте адрес электронной почты по правилу: первые две буквы имени + последние три буквы фамилии + символ @ + строка stud.by.

Если имя или фамилия короче требуемого количества символов, используется вся строка.

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

Имя: <{Alexandr}> ++enter++
Фамилия: <{Ivanov}> ++enter++
Адрес: alnov@stud.by

Пользователь вводит имя текстового файла в формате имя.расширение. Сформируйте новое имя файла, заменив расширение .txt на .bak. После этого выведите исходное и новое имя файла.

Имя файла: <{report.txt}> ++enter++
Исходный файл: report.txt
Резервная копия: report.bak

Напишите программу, которая из введённых имени, фамилии и номера группы студента составит логин для доступа в ресурсный центр. Логин должен быть результатом сложения первых трёх букв имени и фамилии и последних четырёх символов в номере группы. Если символов в имени, фамилии или номере группы меньше чем требуется, берётся вся строка.

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

Имя: <{Альберт}> ++enter++
Фамилия: <{Эйнштейн}> ++enter++
Номер группы: <{240425}> ++enter++
Логин: АльЭйн0425
Имя: <{Георг}> ++enter++
Фамилия: <{Ом}> ++enter++
Номер группы: <{25}> ++enter++
Логин: ГеоОм25

Напишите программу, которая преобразует строку с датой из формата мм/дд/гггг в дд.мм.гггг. Если номер дня или месяца состоит из одной цифры, при вводе слева записывается ноль.

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

мм/дд/гггг: <{03/18/2026}> ++enter++ 
18.03.2026

Пользователь вводит номер телефона в виде строки из 9 цифр без пробелов и других символов. Сформируйте и выведите номер в формате +375 (XX) XXX-XX-XX.

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

Номер телефона: <{291234567}> ++enter++
+375 (29) 123-45-67

С клавиатуры вводятся имя, фамилия и отчество. Выведите на экран текст с инициалами.

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

Фамилия: <{Алферов}> ++enter++
Имя: <{Жорес}> ++enter++
Отчество: <{Иванович}> ++enter++
Ж.И. Алферов

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

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

Строка: <{Группа 240424. Задания для 240424.}> ++enter++
Заменить: <{240424}> ++enter++
На: <{240425}> ++enter++
Новый текст: Группа 240425. Задания для 240425.
Количество замен: 2

Пользователь вводит имя, фамилию и год рождения. Сформируйте адрес электронной почты по правилу: первые две буквы имени + последние три буквы фамилии + символ @ + строка stud.by.

Если имя или фамилия короче требуемого количества символов, используется вся строка.

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

Имя: <{Alexandr}> ++enter++
Фамилия: <{Ivanov}> ++enter++
Адрес: alnov@stud.by

Пользователь вводит имя текстового файла в формате имя.расширение. Сформируйте новое имя файла, заменив расширение .txt на .bak. После этого выведите исходное и новое имя файла.

Имя файла: <{report.txt}> ++enter++
Исходный файл: report.txt
Резервная копия: report.bak

Напишите программу, которая из введённых имени, фамилии и номера группы студента составит логин для доступа в ресурсный центр. Логин должен быть результатом сложения первых трёх букв имени и фамилии и последних четырёх символов в номере группы. Если символов в имени, фамилии или номере группы меньше чем требуется, берётся вся строка.

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

Имя: <{Альберт}> ++enter++
Фамилия: <{Эйнштейн}> ++enter++
Номер группы: <{240425}> ++enter++
Логин: АльЭйн0425
Имя: <{Георг}> ++enter++
Фамилия: <{Ом}> ++enter++
Номер группы: <{25}> ++enter++
Логин: ГеоОм25

Задание 7* (sam07.py)

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

Дана строка. Определите, является ли она корректным идентификатором Python. Строка считается корректным идентификатором, если она содержит только буквы, цифры и символ _, не начинается с цифры и не является пустой.

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

Введите строку: <{sum_1}> ++enter++
Подходит
Введите строку: <{1prod}> ++enter++
Не подходит

Дана строка. Посчитайте количество гласных и согласных букв в ней. Все буквы в строке - строчные.

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

Строка: <{телескоп}> ++enter++
Гласных букв: 3
Согласных букв: 5
Строка: <{123!@#}> ++enter++
Гласных букв: 0
Согласных букв: 0

Напишите программу, которая проверяет, подходит ли введённая строка в качестве пароля. Требования к паролю:

  • минимальная длина - 8 символов;
  • содержит минимум 3 цифры;
  • не содержит пробелов.

Если пароль не подходит, программа выводит причину.

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

Введите пароль: <{ps123}> ++enter++
Меньше 8 символов
Введите пароль: <{passw_12}> ++enter++
Меньше 3 цифр
Введите пароль: <{passw 123}> ++enter++
Есть пробелы
Введите пароль: <{whitehat123}> ++enter++
Пароль whitehat123 подходит

Пользователь вводит друг за другом два слова. Программа должна определить, можно ли из букв слова с наибольшим количеством букв, составить слово с наименьшим количеством букв.

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

Введите первое слово: <{око}> ++enter++
Введите второе слово: <{окно}> ++enter++
Из слова окно можно составить слово око
Введите первое слово: <{программа}> ++enter++
Введите второе слово: <{строка}> ++enter++
Составить нельзя

Дана строка. Определите, является ли она корректным идентификатором Python. Строка считается корректным идентификатором, если она содержит только буквы, цифры и символ _, не начинается с цифры и не является пустой.

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

Введите строку: <{sum_1}> ++enter++
Подходит
Введите строку: <{1prod}> ++enter++
Не подходит

Дана строка. Посчитайте количество гласных и согласных букв в ней. Все буквы в строке - строчные.

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

Строка: <{телескоп}> ++enter++
Гласных букв: 3
Согласных букв: 5
Строка: <{123!@#}> ++enter++
Гласных букв: 0
Согласных букв: 0

Напишите программу, которая проверяет, подходит ли введённая строка в качестве пароля. Требования к паролю:

  • минимальная длина - 8 символов;
  • содержит минимум 3 цифры;
  • не содержит пробелов.

Если пароль не подходит, программа выводит причину.

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

Введите пароль: <{ps123}> ++enter++
Меньше 8 символов
Введите пароль: <{passw_12}> ++enter++
Меньше 3 цифр
Введите пароль: <{passw 123}> ++enter++
Есть пробелы
Введите пароль: <{whitehat123}> ++enter++
Пароль whitehat123 подходит

Пользователь вводит друг за другом два слова. Программа должна определить, можно ли из букв слова с наибольшим количеством букв, составить слово с наименьшим количеством букв.

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

Введите первое слово: <{око}> ++enter++
Введите второе слово: <{окно}> ++enter++
Из слова окно можно составить слово око
Введите первое слово: <{программа}> ++enter++
Введите второе слово: <{строка}> ++enter++
Составить нельзя

Дана строка. Определите, является ли она корректным идентификатором Python. Строка считается корректным идентификатором, если она содержит только буквы, цифры и символ _, не начинается с цифры и не является пустой.

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

Введите строку: <{sum_1}> ++enter++
Подходит
Введите строку: <{1prod}> ++enter++
Не подходит

Дана строка. Посчитайте количество гласных и согласных букв в ней. Все буквы в строке - строчные.

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

Строка: <{телескоп}> ++enter++
Гласных букв: 3
Согласных букв: 5
Строка: <{123!@#}> ++enter++
Гласных букв: 0
Согласных букв: 0

Напишите программу, которая проверяет, подходит ли введённая строка в качестве пароля. Требования к паролю:

  • минимальная длина - 8 символов;
  • содержит минимум 3 цифры;
  • не содержит пробелов.

Если пароль не подходит, программа выводит причину.

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

Введите пароль: <{ps123}> ++enter++
Меньше 8 символов
Введите пароль: <{passw_12}> ++enter++
Меньше 3 цифр
Введите пароль: <{passw 123}> ++enter++
Есть пробелы
Введите пароль: <{whitehat123}> ++enter++
Пароль whitehat123 подходит

Пользователь вводит друг за другом два слова. Программа должна определить, можно ли из букв слова с наибольшим количеством букв, составить слово с наименьшим количеством букв.

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

Введите первое слово: <{око}> ++enter++
Введите второе слово: <{окно}> ++enter++
Из слова окно можно составить слово око
Введите первое слово: <{программа}> ++enter++
Введите второе слово: <{строка}> ++enter++
Составить нельзя

Дана строка. Определите, является ли она корректным идентификатором Python. Строка считается корректным идентификатором, если она содержит только буквы, цифры и символ _, не начинается с цифры и не является пустой.

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

Введите строку: <{sum_1}> ++enter++
Подходит
Введите строку: <{1prod}> ++enter++
Не подходит

Дана строка. Посчитайте количество гласных и согласных букв в ней. Все буквы в строке - строчные.

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

Строка: <{телескоп}> ++enter++
Гласных букв: 3
Согласных букв: 5
Строка: <{123!@#}> ++enter++
Гласных букв: 0
Согласных букв: 0