В этом уроке мы займемся решением задач. Для этого нам понадобятся некоторые математические функции, встроенные в основную библиотеку Python:
- int(х) Получение целого числа из строки цифр или из вещественного числа путем отсекания дробной части
- float(х) Получение вещественного числа из строки цифр с точкой или из целого числа
- abs(х) Абсолютное значение числа (модуль)
- х**а Возведение числа Х в степень А
- х//а Деление нацело числа Х на А
- х%а Остаток от деления числа Х на А
- round(х) Округляет Х до ближайшего целого
- round(х, а) Округляет Х до А знаков после точки
Кроме того, еще больше функций, необходимых для математических вычислений, собрано в библиотеке math.
Библиотека в программировании – это дополнительный модуль с набором различных функций для решения каких-либо узкоспециализированных задач. В нашем случае – для математических вычислений.
Некоторые библиотеки поставляются вместе с Python, другие нужно устанавливать отдельно. Библиотека math поставляется с Питоном, поэтому отдельно скачивать и устанавливать ее не требуется.
Вот список функций библиотеки math:
- sqrt(х) Квадратный корень из Х
- floor(х) Округляет Х до меньшего целого значения
- ceil(х) Округляет Х до большего целого значения
- log(х) Натуральный логарифм из Х
- sin(х) Синус угла Х, указанного в радианах
- cos(х) Косинус угла Х, указанного в радианах
- tan(х) Тангенс угла Х, указанного в радианах
Для того, чтобы воспользоваться функциями из дополнительной библиотеки, необходимо в самом начале программы написать инструкцию подключения:
import math
Иными словами, мы импортируем из нее все ее функции.
Теперь, для того, чтобы наша среда программирования точно понимала, что мы хотим использовать какую-то конкретную функцию из какой-то конкретной библиотеки (а в одной программе могут быть подключены десятки библиотек, и существует вероятность, что среди всех функций из всех библиотек есть одинаковые), то необходимо перед функцией приписать название библиотеки, например, math.sqrt().
Итак, в законченном виде, например, извлечение квадратного корня будет выглядеть так:
y = math.sqrt(x)
Думаем, понятно. К слову, извлечение корня возможно также посредством использования операции возведения в степень. Например, перепишем предыдущий пример:
y = x**0.5
То есть, мы возвели число Х в степень ½ . А что это, если не квадратный корень? Получается, для извлечения корней никаких библиотек вообще подключать не нужно – можно справиться встроенными функциями.
Теперь поговорим о различных видах округления чисел. В Python их целых три. Проще всего будет разобрать на примерах:
round(4.51) # Стандартное округление, как мы привыкли, округляется до 5
round(4.5) # Здесь округляется до 4
math.floor(4.5) # Округляется в меньшую сторону, т.е. до 4
math.ceil(4.2) # Округляется в большую сторону, т.е. до 5
Каждая из этих функций пригодится, уж поверьте.
Кстати, заметили, что в строках появился новый символ «#»? Это знак комментария. Все, что находится в строке после него, сохраняется, но при работе программы не учитывается. Хорошая вещь, нужная, если вы работаете на большим проектом – потом пригодится, если нужно будет вспомнить и понять, что к чему в коде.
Давайте напишем какую-нибудь программу. Например, для вычисления гипотенузы прямоугольного треугольника с использованием модуля math.
Привыкайте оформлять код программы красиво. Например, хорошо читается код, который зрительно (с помощью, например, пустых строк) разделен на функциональные блоки. В нашем случае мы отделили основной код программы от блока импортов библиотек.
Также желательно всегда давать пользователю понимание того, что делает программа и что конкретно от него требуется в данный момент. Поэтому мы сначала вывели строку, что программа делает – вычисляет гипотенузу, а потом попросили его ввести катеты.
Из курса математики мы знаем, что квадрат гипотенузы равен сумме квадратов катетов, т.е.
c2 = a2 + b2
Следовательно, C равна квадратному корню из этой суммы. Что мы и сделали в коде, применив функцию sqrt().
Результат выполнения этой программы:
Как видно, хоть в результате получилось целое число 5, Python все равно пририсовал ему дробную часть. Почему? Потому что только сложение, вычитание и умножение в результате дают целые числа. А остальные операции всегда приводят к получению дробные (вещественные) числа. Это в нашем примере результат целый. А если бы мы ввели какие-то другие числа, то и результат был бы вещественным.
Давайте этой задаче придадим бытовой смысл. К примеру, мы построили дом, и теперь нам необходимо накрыть его крышей:
Скаты крыши будут выполнены из металлического профлиста. Нужно вычислить длину профлиста, если известна ширина дома и требуемая высота крыши.
Исходя из условия задачи, сторона b будет равна половине ширины дома, a будет задано. Поэтому просто применим формулу из предыдущего примера.
Предположим, что результат получится дробный. Никто не будет вымерять миллиметры, чтобы отрезать с такой точностью профлист. Поэтому будем округлять до сантиметров (хотя высота крыши и ширина дома будут вводиться в метрах), т.е. до двух знаков после запятой. Например 8,25 м. Для этого нам понадобится функция округления с возможность указания количества цифр после точки – round(х, а).
Смотрим код:
Результат:
Смотрите, мы сознательно разделили получение результата на две части: сначала получаем гипотенузу, потом ее округляем. Но никто не запрещает их объединить в одно:
c = round(math.sqrt(a**2 + b**2), 2)
Согласитесь, что читать такое выражение довольно сложно. Нужно немного подумать. А это занимает время. Поэтому, когда будем изучать функциональное программирование (а это именно оно), мы научимся находить компромисс между читаемостью и сокращением строк кода.
------------------------------
Список уроков Программирование на Python для начинающих. Базовый уровень
Следующий урок Основы логических выражений
Предыдущий урок input() - функция ввода информации посредством клавиатуры
------------------------------
Задания
1. Дано пятизначное число и символ. Построить горизонтальную диаграмму из цифр числа. Результат выполнения должен выглядеть так:
Комменты приветствуются, за палец вверх - отдельное спасибо. Удачи!