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

Programming

Languages

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


Базовый синтаксис языка Python 3.
Операции отношения и логиче-
ские операции.
Линейные алгоритмы

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 Basic Syntax. Relation and Logical Operations. Linear Algorithms

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


Базовый синтаксис языка Python 3.
Операции отношения и логические
операции. Линейные алгоритмы
Цель работы
Закрепить использование базового синтаксиса языка Python 3 и встроенных в
язык примитивных операций (в частности, логических операций и операций
отношения) на примере разработки простейших интерактивных консольных
приложений с использование линейных алгоритмов.

Индивидуальное задание A
1) Разработайте программу, которая проверяет, что числа a, b и c различны (или
одинаковы).
2) Разработайте программу, которая проверяет, что среди чисел a, b и c есть хотя
бы одна пара совпадающих чисел (или взаимно противоположных).
3) Разработайте программу, которая проверяет, что числа a, b и c являются по-
ложительными (или отрицательными).
4) Разработайте программу, которая проверяет, что среди чисел a, b и c есть хотя
бы одно положительное (или отрицательное).
5) Разработайте программу, которая проверяет, что среди чисел a, b и c есть
только одно положительное (или отрицательное).
6) Разработайте программу, которая проверяет, что среди чисел a, b и c большая
часть положительных (или отрицательных).
7) Разработайте программу, которая проверяет, являются ли числа a, b и c чёт-
ными (или нечётными).
8) Разработайте программу, которая проверяет, что хотя бы одно из чисел a, b и
c чётное (или нечётное).
9) Разработайте программу, которая проверяет, что только одно из чисел a, b и c
чётное (или нечётное).
1 | We hope you enjoy working with Python!
Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

10) Разработайте программу, которая проверяет, что числа a, b и c имеют одина-


ковую чётность.
11) Разработайте программу, которая проверяет, что среди чисел a, b и c большая
часть чётных (или нечётных).

Индивидуальное задание B
12) Разработайте программу, которая проверяет, что цифры четырёхзначного
(или пятизначного, или шестизначного …) числа N образуют возрастающую
(или убывающую) последовательность (к примеру, число 1357 удовлетворяет
условию, т.к. его цифры соответствуют следующему неравенству: 1 < 3 < 5 <
7, т.е. идут в порядке возрастания).
13) Разработайте программу, которая проверяет, что четырёхзначное (или пя-
тизначное, или шестизначное …) число N читается одинаково слева направо
и справа налево (т.е. является палиндромом).
14) Разработайте программу, которая проверяет, что точка с координатами (x, y)
лежит в первой (или во второй, или в третьей, или в четвёртой) координатной
четверти.
15) Разработайте программу, которая проверяет, что точка с координатами (x, y)
лежит внутри прямоугольника, левая верхняя вершина которого имеет коор-
динаты (x1, y1), правая нижняя – (x2, y2), а стороны параллельны координат-
ным осям.

Индивидуальное задание C
16) Разработайте программу, которая проверяет, что числа a, b и c действительно
являются сторонами треугольника.
17) Разработайте программу, которая проверяет, что треугольник, заданный сто-
ронами a, b и c, является равносторонним.
18) Разработайте программу, которая проверяет, что треугольник, заданный сто-
ронами a, b и c, является равнобедренным.
19) Разработайте программу, которая проверяет, что треугольник, заданный сто-
ронами a, b и c, является прямоугольным.

2 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

20) Разработайте программу, которая проверяет, что треугольник, заданный сто-


ронами a, b и c, является прямоугольным и равнобедренным одновременно.

Дополнительное задание
Разработать исследовательскую программу, которая тестировала бы все воз-
можные логические операции и операции отношения над «простыми» (стан-
дартными) типами данных в Python 3. К простым стандартным типам данных
можно отнести целые числа (int), числа с плавающей запятой (float), булевский
тип (bool) и строки (str). Сделать соответствующие выводы.

Перед началом работы всегда думайте о конечном пользователе, только так


можно создать по-настоящему качественный продукт!

3 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

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


1) Необходимо спроектировать блок-схемы линейных алгоритмов решений соот-
ветствующих заданий согласно своему варианту (варианты назначаются препо-
давателем или выбираются самостоятельно, но не менее трёх различных по
смыслу заданий на человека) и на базе данных алгоритмов разработать интер-
активные консольные приложения.
2) При написании кода программ считать, что пользователь вводит всегда кор-
ректные данные.
3) Если логически не подразумевается или в заданиях иного не указано, то вход-
ными и выходными данными являются вещественные числа (числа с плаваю-
щей запятой).
4) Все задания необходимо решать используя только базовые операции (простые
операторы), определённые над числами в языке Python и встроенные матема-
тические функции (т.е. не нужно использовать условные и циклические кон-
струкции, списки и другие контейнеры, строковые данные и операции над ними
и т.д.).
5) Рекомендуется избегать использования глобальных переменных при написа-
нии основной логики приложения.
6) При проверки работоспособности приложений необходимо проверить все те-
стовые случаи.
7) Все программы должна быть разбиты на отдельные функции. При выполнении
заданий необходимо по максимуму пытаться разрабатывать универсальный,
масштабируемый, легко поддерживаемый и читаемый код.
8) Также рекомендуется придерживаться Single Responsibility Principle, SRP
(принципа единственной ответственности) – постарайтесь вынести основную
бизнес-логику задания в отдельную функцию (т.е. архитектура приложения
должна минимум состоять из нескольких функций).
9) Программы должны быть обязательно снабжены комментариями на англий-
ском языке, в которых необходимо указать краткое предназначение программы,
номер лабораторной работы и её название, версию программы, ФИО разра-
ботчика, название бригады (если есть), номер группы и дату разработки. Исход-
ный текст программного кода и демонстрационной программы рекомендуется
также снабжать поясняющими краткими комментариями.
4 | We hope you enjoy working with Python!
Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

10) Программа должна быть снабжена дружелюбным и интуитивно понятным ин-


терфейсом для взаимодействия с пользователем. Интерфейс программы дол-
жен быть на английском языке.
11) При разработке программ придерживайтесь соглашений по написанию кода
на Python (Python Code Convention).

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

5 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

Что нужно запомнить (краткие тезисы)


1. В языке Python для обозначения истинности и ложности есть два булевских
литерала – True и False.
2. Большинство значений в языке Python, которые используются в булевских вы-
ражениях, воспринимаются как истинные значения:
 любая строка является истинной (т.е. имеет значение True), кроме пустых
строк;
 любое число является истинным, кроме нуля;
 любой другой высокоуровневый тип данных (в частности, список, кортеж,
множество, словарь и т.д.) является истинным, если он не является пустым.
3. Значение None воспринимается языком Python как ложь (т.е. является False –
значением).
4. Операции сравнения показывают отношение одного операнда к другому.
5. Все операции сравнения являются бинарными, т.е. для своего вычисления
каждая из операций требует наличие двух операндов.
6. Результатом работы операций отношения всегда является булевское значение.
7. Операция равенства «==» проверяет равны ли оба операнда. Если да, то воз-
вращается значение True, в противном случае - False.
8. Операция неравенства «!=» проверяет различие значений обеих операндов.
Если значения операндов различны, то возвращается значение True, в против-
ном случае - False.
9. Операция больше «>» проверяет больше ли значение левого операнда, чем
значение правого. Если да, то возвращается значение True, в противном слу-
чае - False.
10. Операция меньше «<» проверяет меньше ли значение левого операнда, чем
значение правого. Если да, то возвращается значение True, в противном слу-
чае - False.
11. Операция больше или равно «>=» проверяет больше или равно значение ле-
вого операнда, чем значение правого. Если да, то возвращается значение True,
в противном случае - False.
12. Операция меньше или равно «<=» проверяет меньше или равно значение
левого операнда, чем значение правого. Если да, то возвращается значение
True, в противном случае - False.

6 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

13. Логические операции являются сервисными (дополнительными) для опера-


ций отношения, хотя иногда в языке Python они могут использоваться и само-
стоятельно.
14. В отличии от многих языков программирования в языке Python только три ло-
гических оператора: один унарный – логическое отрицание «НЕТ» (not) и два
бинарных – логический оператор «И» (and) и логический оператор «ИЛИ» (or).
15. Обычно логические операции возвращают булевский результат, но в языке
Python результат работы логических операций зависит от типа операндов, ис-
пользуемых в выражении.
16. Если логические операции работают над числами, то все числа, не равные
нулю, будут восприниматься как истина (True), а все нули – как ложь (False).
17. Если логические операции работают над строками, то все ненулевые (непу-
стые) строки будут восприниматься как истина (True), а все пустые строки – как
ложь (False).
18. Такую аналогию можно использовать и с другими типами данных. К примеру,
пустой список (или кортеж, или словарь, …) будет восприниматься как False, а
если он непустой – как True.
19. Логическое отрицание «not» изменяет логическое значение операнда на про-
тивоположное.
20. Логический оператор "and" даёт истину только в том случае, если оба опе-
ранда истины.
21. Логический оператор "or" даёт истину, если хотя бы один из операндов истин-
ный.
22. Между логическими операторами есть свои приоритеты. Самый высокопри-
оритетный оператор среди них – это логическое отрицание «НЕТ» – not, затем
идёт логическое «И» – and и лишь потом только логическое «ИЛИ» – or.

7 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

Графическое представление алгоритмов


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

Для графического представления алгоритмов решения задачи использую


специальные унифицированные блоки, каждый из которых несёт в себе определён-
ную смысловую нагрузку. Кратко каждый из наиболее востребованных блоков опи-
сывается в нижеприведённой таблице.

Таблица 1 – Наиболее часто используемые блоки

# Shape (блок) Description (описание)


Блок начала/окончания выполнения программы
1.

Блок данных – используется для ввода, объявления


и инициализации переменных программы
2.

Блок действия – используется для вычисления лю-


бых выражений программы
3.

Блок вызова процедур или функций – используется


для обозначения вызова пользовательской функции
4. или процедуры, код или реализация которой нахо-
дится в другом файле
Блок условия – задаёт соответствующие условия
5. дальнейшего выбора хода выполнения кода про-
граммы
Блок вывода данных – используется для обозначе-
6. ния выводимых данных или результата работы про-
граммы

8 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

Продолжение таблицы 1

Блок соединитель на странице – использу-


ется в случае, если блок-схема алгоритма не
7.
может идти всё время сверху вниз и требу-
ется её перенести на другую часть свобод-
ного места на том же листе
Блок соединитель между страницами– ис-
пользуется в случае, если блок-схема алго-
8. ритма не помещается на одной странице и
одну из её частей нужно перенести на дру-
гую страницу

9 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

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


Задание
Разработайте программу, которая проверяет, что треугольник, заданный сто-
ронами a, в и c, является равносторонним.

Решение
1) Перед написание основного приложения разработаем алгоритм решения с
учётом того, что равносторонним называют треугольник, у которого все сто-
роны равны. А следовательно, если заданы три числа, которые равны между
собой, то это действительно стороны треугольника, т.к. выполняется «правило
треугольника» (каждая сторона должна быть меньше суммы двух других сто-
рон) и данный треугольник является равносторонним.

Блок начала алгоритма

start

Блок для ввода данных


a, b, c
Блок проверки условия

True a == b and b == c False

Блок вывода It’s a equilateral


It’s NOT a
данных equilateral
triangle
triangle

Блок окончания
end алгоритма

Рисунок 1 – Блок-схема алгоритма решения задания

Вербальное описание алгоритма (словесная последовательность действий)


состоит из следующих шагов:
a) начало выполнения алгоритма;
10 | We hope you enjoy working with Python!
Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

b) ввод (передача) сторон треугольника;


c) проверка сторон на равенство между собой;
d) вывод (возврат) результат;
e) завершение выполнения алгоритма.
2) Теперь реализуем бизнес-логику программы согласно разработанному алго-
ритму с использованием соответствующей функции is_equilateral_triangle().
Данная функция будет принимать на вход три числовых параметра – стороны
треугольника и возвращать истинность или ложность проверки условия о рав-
ностороннем треугольнике:

Обратите внимание, как приятно читать и сопровождать


вышеописанный код. Рекомендуется следовать такому же
стилю написания программного кода на языке Python

3) Разберём более подробно код первой функции бизнес-логики:

Название функции должно быть глаголом и говоря- Объявление формальных парамет-


щим, т.е. подсказывать, для чего она предназначена!!! ров функции для получения сторон
треугольника

Оператор return завершает вы- Высчитываем соответствующее выражение,


полнение функции и возвращает которое состоит их операций отношения и
высчитанный результат логической операции

4) На заключительном этапе опишем основной код программы, который вызы-


вает разработанную функцию бизнес-логики:

11 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

5) Разберём более подробно данный код:


Объявление внешних переменных и присваивание им тестовых значений сторон треугольника,
которые будет вводить пользователь во время работы программы с помощью функции input()

Передача в
функцию факти-
ческих данных о
Вызов сторонах тре-
функции угольника

Объявление
переменной,
которой будет
присваи-
ваться воз-
вращаемое Использование услов-
функцией ной операции для фор-
значение мирования читабель-
Вывод соответствующего результата в си-
ного результата для
стемную консоль (терминал) с помощью
пользователя
встроенной функции print()

6) Программа была написана и тестировалась с использованием среды разра-


ботки JetBrains PyCharm. Несколько вариантов результата работы программы
представлены ниже на рисунках 2 и 3.

12 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

Рисунок 2 – Компиляция и запуск приложения в среде PyCharm, где стороны


треугольника различны

Рисунок 3 – Компиляция и запуск приложения в среде PyCharm, где стороны


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

13 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

Пример исследовательской программы для те-


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

Решение
1) Ниже представлен исходный код тестирования всех возможных логических
операций и операций отношения над данными строкового типа:

# testing Comparison/Relation(al) and Logical Operations on string type data

str1 = "code"
str2 = "test"

print("Result of testing Comparison/Relation(al) Operations on string type data")

result = str1 > str2


s = f"greater than: '{str1}' > '{str2}' => {result}\n"

result = str1 >= str2


s += f"greater than or equal to: '{str1}' > '{str2}' => {result}\n"

result = str1 < str2


s += f"less than: '{str1}' < '{str2}' => {result}\n"

result = str1 <= str2


s += f"less than or equal to: '{str1}' < '{str2}' => {result}\n"

result = str1 == str2


s += f"equal to: '{str1}' == '{str2}' => {result}\n"

result = str1 != str2


s += f"not equal to: '{str1}' != '{str2}' => {result}\n"

print(s)

print("Result of testing Logical Operations on string type data")

result = not ""


s = f"logical NOT: not '{' '}' => {result}\n"

14 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

result = not str1


s += f"logical NOT: not '{str1}' => {result}\n"

result = str1 and str2


s += f"logical AND: '{str1}' and '{str2}' => {result}\n"

result = str2 and str1


s += f"logical AND: '{str2}' and '{str1}' => {result}\n"

result = str1 or str2


s += f"logical OR: '{str1}' or '{str2}' => {result}\n"

result = str2 or str1


s += f"logical OR: '{str2}' or '{str1}' => {result}\n"

print(s)

2) Ниже представлен скриншот работы тестовой программы:

15 | We hope you enjoy working with Python!


Python Basic Syntax. Relation and Logical Operations. Linear Algorithms

Контрольные вопросы
1. Как реализуется истинность и ложность в языке Python?
2. В чём схожесть группы операций отношения (сравнения)?
Какие операции включает в себя данная группа?
3. Каков приоритет между операциями отношения и их
ассоциативность?
4. В чём схожесть группы логических операций? Какие операции включает в
себя данная группа?
5. Какой логической операции нет в языке Python?
6. Каков приоритет между логическими операциями и их ассоциативность?
7. Как в языке Python ведут себя операции отношения при использовании их с
числами? Объясните логику их работы.
8. Как в языке Python ведут себя операции отношения при использовании их со
строками? Объясните логику их работы.
9. Как в языке Python ведут себя операции отношения при использовании их со
списками, кортежами и другими высокоуровневыми типами данных?
Объясните логику их работы.
10. Как в языке Python ведут себя логические операции при использовании их с
числами, строками и другими высокоуровневыми типами данных в булевских
выражениях? Объясните логику их работы.

16 | We hope you enjoy working with Python!