Добавил:
t.me Установите расширение 'SyncShare' для решения тестов в LMS (Moodle): https://syncshare.naloaty.me/ . На всякий лучше отключить блокировщик рекламы с ним. || Как пользоваться ChatGPT в России: https://habr.com/ru/articles/704600/ || Также можно с VPNом заходить в bing.com через Edge браузер и общаться с Microsoft Bing Chat, но в последнее время они форсят Copilot и он мне меньше нравится. || Студент-заочник ГУАП, группа Z9411. Ещё учусь на 5-ом курсе 'Прикладной информатики' (09.03.03). || Если мой материал вам помог - можете написать мне 'Спасибо', мне будет очень приятно :) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3 курс 1 семестр / Z9411_TP_LR4_Kafka

.docx
Скачиваний:
2
Добавлен:
18.05.2022
Размер:
107.09 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 41

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

канд. тех. наук, доцент

Аграновский А. В.

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ЛАБОРАТОРНАЯ РАБОТА №4

Смешанные алгоритмы

по дисциплине: Технологии программирования

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

Z9411

Кафка Р. С.

номер группы

подпись, дата

инициалы, фамилия

Студенческий билет №

2019/3603

Шифр ИНДО

Санкт-Петербург 2022

  1. Постановка задачи

Вариант №7. Дан текст. Вывести в алфавитном порядке все буквы, которые входят в этот текст по одному разу.

Ограничений на входные данные нет.

  1. Математическая модель

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

  1. Описание разработанной программы

Список входных данных представлен в таблице №1.

Таблица №1 - список входных данных

Имя переменной

Тип переменной

Назначение

text

String

Хранит в себе текст

Список выходных данных представлен в таблице №2.

Таблица №2 - список выходных данных

Тип

Назначение

List (Кортеж/Список)

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

Программе даётся текст. После этого текст разделяется на отдельные символы и добавляются в список. Создаётся новый пустой список. Программа начинает проверять каждый символ в первом списке и сравнивать с символами во втором новом списке. Если такой символ ещё не встречается – заносит его туда. Во избежание проблем дублирования заглавных и строчных символов используется метод string lower(), которая изменяет любую букву на строчную. Остальные символы не будут являться ошибкой, в методе это предусмотрено.

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

В конце выводится обработанный список.

Если в процессе обработки программы будут даны некорректные данные или произойдёт ошибка на одном из этапов – программа выведет сообщение об ошибке.

Блок-схема разработанной программы представлена на рисунке 1.

Рисунок 1 – Блок-схема основной функции

Листинг основного программного кода:

def LAB4_VAR_7(text):

    """

    Выводит в алфавитном порядке все буквы, которые входят в данный текст по одному разу.

    """

    try:

        text.split() #Разбивает строку на одиночные символы

        letters = [] #Создаём пустой список

        #Цикл по каждой букве в разбитой строке

        for i in text:

            if i.lower() not in letters: #Если буквы всё ещё нет в контейнере, то добавляет её туда

                letters.append(i.lower()) #Буква добавляется строчной чтобы избежать дублирования с заглавными

        letters.sort()

        #Цикл убирает из списка все символы, которые не являются буквами

        for i in letters[:]: #Работаем с копией списка при помощи среза чтобы избежать проблем

            if not i.isalpha():

                letters.remove(i)

        return letters

    except AttributeError:

        print("ОШИБКА. Был введён не текст, а число.")

        text = str(input("Введите текст: "))

        return LAB4_VAR_7(text)

Листинг кода для тестов:

def TEST1_LAB4_VAR_7():

    expected_result = ["a", "e", "g", "h", "i", "o", "r", "s", "t", "v", "w"]

    res = LAB4_VAR_7("the weather is hot, we go to the river")

    if expected_result == res:

        print("Тест 1 - ОК")

    else:

       print("Тест 1 - FAIL")

       

def TEST2_LAB4_VAR_7():

    expected_result = ["a", "d", "e", "i", "m", "n", "s", "t", "u", "y", "z"]

    res = LAB4_VAR_7("My name is Zenya. I'm a student.")

    if expected_result == res:

        print("Тест 2 - ОК")

    else:

       print("Тест 2 - FAIL")

       

def TEST3_LAB4_VAR_7():

    expected_result = ["а", "в", "г", "д", "е", "и", "л", "н", "о", "с", "т", "у", "ц", "ю", "я"]

    res = LAB4_VAR_7("на улице светит солнце, люди гуляют")

    if expected_result == res:

        print("Тест 3 - ОК")

    else:

       print("Тест 3 - FAIL")

def TEST4_LAB4_VAR_7():

    expected_result = ["а", "в", "д", "е", "з", "и", "к", "л", "н", "о", "п", "с", "т", "ц"]

    res = LAB4_VAR_7("На востоке солнце встает. А на западе виден закат.")

    if expected_result == res:

        print("Тест 4 - ОК")

    else:

       print("Тест 4 - FAIL")

def TEST5_LAB4_VAR_7():

    expected_result = ["а", "в", "д", "е", "ж", "и", "й", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ч", "ь",]

    res = LAB4_VAR_7(3101998)

    if expected_result == res:

        print("Тест 5 - ОК")

    else:

       print("Тест 5 - FAIL")

  1. Описание тестового набора

Тестирование будет производится на следующих данных, представленных в таблице №3.

Таблица №3 – тестовый набор

Описание тестового случая

Входные данные

Ожидаемый результат

Результат теста

Предложение на английском со строчными буквами

'the weather is hot, we go to the river'

['a', 'e', 'g', 'h', 'i', 'o', 'r', 's', 't', 'v', 'w']

Пройден

Предложение на английском

'My name is Zenya. I’m a student.'

['a', 'd', 'e', 'i', 'm', 'n', 's', 't', 'u', 'y', 'z']

Пройден

Предложение на русском со строчными буквами

'на улице светит солнце, люди гуляют'

['а', 'в', 'г', 'д', 'е', 'и', 'л', 'н', 'о', 'с', 'т', 'у', 'ц', 'ю', 'я']

Пройден

Предложение на русском

'На востоке солнце встает. А на западе виден закат.'

['а', 'в', 'д', 'е', 'з', 'и', 'к', 'л', 'н', 'о', 'п', 'с', 'т', 'ц']

Пройден

Ошибочные данные

3101998

Затем «Андрей Владимирович, поставьте, пожалуйста, мне 5!»

Сообщение об ошибке

Затем ["а", "в", "д", "е", "ж", "и", "й", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ч", "ь",]

Пройден

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

На рисунке 2 представлен пример работы программы.

Рисунок 2 – Пример работы программы

  1. Выводы

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

В ходе выполнения лабораторной работы была реализована программа, которая выводит в алфавитном порядке все буквы, которые встречаются в заданном тексте. Были получены практические навыки написание расчётных программ на языке программирования Python.

Соседние файлы в папке 3 курс 1 семестр