Используем python для математических вычислений

Введение

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

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

Поэтому очень быстро программистам пришла в голову идея записывать программы на языке, близком к английскому, а затем использовать программу-переводчик, которая переведет его в бинарный код. Такие языки называются языками программирования высокого уровня (по сути это английский язык, в котором введены дополнительные правила, чтобы исключить неоднозначность команд), а программы-переводчики - трансляторами.

К чему я это? Чтобы наш алгоритм стал понятен компьютеру, нам придется записать его на одном из языков программирования. В этом уроке мы начнем знакомиться с одним из самых популярных из них - языком Python 3.

Поехали! 🚀

Почему Python?

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

Начинать обучение можно с разных языков, но считается, что проще всего будет начать с языка Python, и вот почему:

  • python считается относительно несложным языком с достаточно простым синтаксисом, визуально программа на питоне похожа на текст на английском языке;
  • программы на питоне пишутся куда быстрее, чем на других языках;
  • python универсален, его можно применить (и активно применяют) в любых областях от создания сайтов до искуственного интеллекта;
  • python укомплектован большим числом встроенных библиотек на все случаи жизни, и еще больше библиотек разрабатывается сообществом и готово к установке через встроенный менеджер пакетов.

Python выглядит практически идеальным универсальным языком, но у него есть и несколько минусов, основной из которых - скорость работы программ. На С++ в некоторых ситуациях можно получить двадцатикратный выигрыш в производительности. Но чаще всего на современных компьютерах это не является критичным.

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

Установка ПО

Чтобы программировать на Питоне, нам потребуется установить интерпретатор языка Питон. Это программа, которая переводит код на языке Python в машинный код, чтобы процессор мог его выполнить.

Скачать его можно c официального сайта - https://www.python.org/downloads/, можно смело скачивать самую последнюю версию.

Для работы на планшете или онлайн можно использовать онлайн компиляторы, например, Repl.it, но работать локально будет гораздо удобнее.

При установке на windows нужно установить галочку "Добавить в PATH". Это нужно для того, чтобы запускать Python из любого места и устанавливать библиотеки одной командой.

IDLE - ваш новый инструмент для общения с компьютером

Вместе с интерпретатором (переводчиком с питона на машинный код) языка python, который называется python.exe (на windows) и выполняет готовые файлы с программами, у вас на компьютере установился простенький редактор кода, который называется IDLE (Integrated Development and Learning Environment) - интегрированная среда разработки и обучения.

Именно с IDLE мы и будем работать в ближайшие месяцы. Найди эту программу на компьютере и запусти ее.

По умолчанию IDLE запускается в режиме консоли - в таком режиме можно вводить команды по одной, а компьютер будет сразу же их выполнять и показывать результат. Такой режим позволяет быстро что-нибудь посчитать или проверить, как работает ли интересная тебе команда.

Давай попробуем! Например, можно вычислить любой пример с + и -.

Чтобы посчитать что-нибудь, нужно ввести команду и нажать Enter на клавиатуре.

Арифметические операции в python

В питоне доступны все стандартные математические операции, они перечислены ниже. Кроме них вы можете использовать скобки для обозначения порядка действий (как и в математике).

1. Сложение

10 + 5

2. Вычитание

10 - 5

3. Умножение

10 * (5 + 2)

4. Деление

Результат деления - это всегда действительное число (иными словами, десятичная дробь). Такие числа в питоне записываются через точку, например 10.533.

10 / 3

5. Целочисленное деление.

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

10 // 3

6. Деление по модулю (остаток от деления).

10 % 3

7. Возведение в степень.

2 ** 8

Бонус. Отличная особенность питона - наличие встроенной длинной арифметики. Иными словами у вас нет никаких ограничений на размер чисел, с которыми вы работаете (например, в питоне можно вычислить 123 в степени 1000, а в других языках вам понадобятся сторонние библиотеки).

Попробуй выбрать несколько сложных примеров из учебника математики и решить их с помощью консоли питона.

Библиотека math

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

Что такое модуль? Представь, что у на столе лежит очень много вещей, и далеко не все из них нужны тебе каждый день. Скорее всего ты решишь навести порядок и разложить часть вещей по ящикам. То, что ты используешь каждый день останется на столе (и это то, что встроенно непосредственно в язык), а редко используемые вещи будут разложены по ящикам (то есть по отдельным модулям).

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

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

import math

Например, пусть мы хотим округлять вещественные числа до ближайшего целого числа вверх, можно использовать команду math.ceil(3.14). А вниз math.floor(3.14).

Полный список команд можно найти в документации - https://docs.python.org/3/library/math.html.

Вот некоторые из них:

Команда Описание
Округление
int(x) Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math.
math.round(x) Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.
math.round(x, n) Округляет число x до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать модуль math.
math.floor(x) Округляет число вниз («пол»), при этом floor(1.5) == 1, floor(-1.5) == -2
math.ceil(x) Округляет число вверх («потолок»), при этом ceil(1.5) == 2, ceil(-1.5) == -1
abs(x) Модуль (абсолютная величина). Это — стандартная функция.
Корни, логарифмы
math.sqrt(x) Квадратный корень. Использование: sqrt(x)
math.log(x) Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b.
math.e Основание натуральных логарифмов e = 2,71828...
Тригонометрия
math.sin(x) Синус угла, задаваемого в радианах
math.cos(x) Косинус угла, задаваемого в радианах
math.tan(x) Тангенс угла, задаваемого в радианах
math.asin(x) Арксинус, возвращает значение в радианах
math.acos(x) Арккосинус, возвращает значение в радианах
math.atan(x) Арктангенс, возвращает значение в радианах
math.atan2(y, x) Полярный угол (в радианах) точки с координатами (x, y).
math.degrees(x) Преобразует угол, заданный в радианах, в градусы.
math.radians(x) Преобразует угол, заданный в градусах, в радианы.
math.pi Константа π = 3.1415...

Теперь можно уже брать учебник старших классов и смело решать примеры оттуда. Все команды можно комбинировать.

Кстати, если ты хочешь округлить число математически (т.е., чтобы питон сам решил, вверх или вниз нужно округлять), можно использовать функцию (команду) round. Эта команда встроена непосредственно в язык (ее не нужно импортировать), но работает она странно. На досуге попробуй понять, почему так?