Вы находитесь на странице: 1из 6

Programming

Languages

Лабораторная работа #09


Высокоуровневые типы данных
языка Python. Списки

LEARN. GROW. SUCCEED.


® 2020-2021. Department: <Software of Information Systems and Technologies>
Faculty of Information Technology and Robotics
Belarusian National Technical University
by Viktor Ivanchenko / ivanvikvik@bntu.by / Minsk
Python High Level Data Types. Lists

ЛАБОРАТОРНАЯ РАБОТА #09


Высокоуровневые типы данных
языка Python. Списки
Цель работы
Изучить и практически закрепить использование списков в языке Python на
примере разработки простейших интерактивных консольных приложений.

Общее задание
Дана некоторая последовательность вещественных чисел. Необходимо напи-
сать приложение, которое эффективным способом:
 находит экстремальные элементы заданной последовательности (наиболь-
ший и наименьший элементы последовательности);
 подсчитывает количество положительных, отрицательных и равных нулю
элементов последовательности;
 меняет местами экстремальные элементы (если их несколько, то пер-
вые/последние из найденных элементов последовательности);

Индивидуальное задание
Согласно своему варианту необходимо реализовать на языке Python только
ПЕРВОЕ ЗАДАНИЕ, которое было дано на лабораторной работе «Массивы» по
параллельной специализированной дисциплине «Основы алгоритмизации и
программирования» за первый семестр первого курса обучения.

Дополнительное задание
Необходимо переработать программное решение из дополнительного задания
предыдущей лабораторной работы №7 таким образом, чтобы пользователь
мог загадывал любое число, а компьютер, используя эффективные алгоритмы,
смог его отгадать.

1 | We hope you enjoy working with Python!


Python High Level Data Types. Lists

Для реализации МОЩНОГО «интеллекта» компьютера для угадывания загадан-


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

Можно попытаться реализовать в программе адаптивный алгоритм, т.е. ис-


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

Before you start, always think about users.


This is the only way to create a truly high-quality product!

2 | We hope you enjoy working with Python!


Python High Level Data Types. Lists

Требования к выполнению заданий


1) Необходимо спроектировать блок-схемы алгоритмов решений соответствую-
щих заданий согласно своему варианту (варианты назначаются преподавате-
лем или выбираются самостоятельно студентом, но ни один вариант не дол-
жен повторяться у студентов из одной группы) и на базе данных алгоритмов
разработать интерактивные консольные приложения.
2) Для масштабируемости разрабатываемого программного решения размер
последовательности (списка) и его элементы должны задаваться пользовате-
лем во время выполнения программы.
3) Рекомендуется избегать использования глобальных переменных при написании ос-
новной логики приложения.
4) Для автоматизации заполнения различными значениями искомого контей-
нера рекомендуется использовать соответствующие функции генерирования
псевдослучайных чисел модуля random.
5) Если логически не подразумевается или в заданиях иного не указано, то вход-
ными и выходными данными являются вещественные числа (числа с плаваю-
щей запятой).
6) Все программы должны быть разбиты на отдельные функции. Среди данных
функций рекомендуется добавлять стартовую функцию main, с которой лучше
производить запуск программы.
7) При выполнении заданий необходимо по максимуму пытаться разрабатывать
универсальный, масштабируемый, легко поддерживаемый и читаемый код.
8) Также рекомендуется придерживаться Single Responsibility Principle, SRP
(принципа единственной ответственности) – постарайтесь вынести основную
бизнес-логику задания в отдельную функцию (т.е. архитектура приложения
должна минимум состоять из нескольких функций).
9) В соответствующих компонентах (функциях) бизнес-логики необходимо
предусмотреть «защиту от дурака».
10) При проверки работоспособности приложений необходимо проверить все
тестовые случаи.
11) Программы должны обязательно быть снабжены комментариями на англий-
ском языке, в которых необходимо указать краткое предназначение программ,

3 | We hope you enjoy working with Python!


Python High Level Data Types. Lists

номер лабораторной работы и её название, версию программы, ФИО разра-


ботчика, название бригады (если есть), номер группы и дату разработки. Ис-
ходный текст программного кода и демонстрационной программы рекомен-
дуется также снабжать поясняющими краткими комментариями.
12) Программы должны быть снабжены дружелюбным и интуитивно понятным
интерфейсом для взаимодействия с пользователем. Интерфейс программ
должен быть на английском языке.
13) При разработке программ придерживайтесь соглашений по написанию кода
на Python (Python Code Convention).

Best of LUCK with it, and remember to HAVE FUN while you’re learning :)
Victor Ivanchenko

4 | We hope you enjoy working with Python!


Python High Level Data Types. Lists

Контрольные вопросы
1. Какие есть встроенные в язык Python высокоуровневые типы
данных?

2. Что такое изменяемый (mutable) тип данных и неизменяемый


(immutable)?

3. Опишите внутреннюю архитектуру, основные характеристики и особенности


списков (list) в языке Python. За счёт чего список один из самых популярных
высокоуровневых типов данных в языке Python?

4. Каким образом можно объявлять, создавать и инициализировать в языке


Python списки? Перечислите все возможные варианты.

5. Как получить доступ к отдельным элементам списка? Как получить полную


копию списка?

6. Как и для чего можно использовать срезы (slicing) для работы со списком?

7. Опишите работу базовых операторов (операций) для работы со списками:

 + (concatenation – слияние списков);


 * (repetition – операция размножения элементов списка);
 [index] (indexer – доступ к отдельному элементу списка);
 [:] или [::] (slicing – возвращает указанную часть элементов списка);
 in и not in (membership – операция принадлежности элементов списка);
 for-else (использование оператора-цикла для обхода всех элементов
списка);
 del (удаление элемента или нескольких элементов списка, удаление са-
мого списка).
8. Опишите работу встроенных функции для работы со списками: len(), max(),
min(), list().

9. Опишите работу основных методов списка: append, insert, pop, remove, sort,
count, index, reverse, extend.

10. Что такое генераторы списков и как и для чего их можно использовать?

5 | We hope you enjoy working with Python!