Работа с числами в Python

Числа в Python Python

В этой статье мы расскажем, какие возможности для работы с числами предлагает Python: вычисления, сравнения, работа с разными типами чисел.

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

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

Работа с числами в Python

Собственно, что мы подразумеваем под понятием «Работа с числами» – возможно, спросите вы. Под это понятие можно подставить практически все, начиная от простейших вычислений и вывода результата и заканчивая кодированием графической и аудиоинформации посредством последовательности чисел. Но так как это всего лишь ознакомительная статья, мы расскажем только о базовом функционале Python по работе с числами. А начнем с самого представления числа в языке.

Числа: целые, вещественные, комплексные

Если в школьном курсе математики нас учили, что числа могут быть рациональными, иррациональными, натуральными и так далее, то в Python все намного проще. Все числа выделяются в три большие группы: целые, вещественные и комплексные.

Целые

Уже название говорит само за себя. int в питоне это — целые числа (и цифры), которые используются для счета. Целыми числами можно посчитать количество этажей в доме, автобусов на линии, оценок в журнале, просмотренных в ленте постов и тому подобное. Единственное, с чем не могут справиться целые числа, так это разные половинки. Например, 3 яблока и 4 доли целым числом уже не записать. В Python переменные, хранящие целые числа, имеют тип данных int (сокращенно от integer).

Для объявления целочисленной переменной достаточно указать ее название, а после через знак равно прописать значение:

number = 13

Чтобы убедиться, используем встроенную функцию определения типа type:

type(number) # <class 'int'>

По сравнению с другими описанными ниже есть преимущество: они занимают намного меньше места в памяти. Например, достаточно всего 8 бит информации для хранения значений от 0 до 255.

Примечание для программистов, работающих с си-подобными языками: в Python нет ключевых слов «long», «unsigned», «short». Связано это с динамической типизацией и самим процессом работы с памятью.

Функция int

В основном, все переменные, которые принимают ввод со стороны пользователя, хранят значения с типом данных str (сокращенно от string — строка). Работать с целыми значения , представленными в виде строки практически невозможно (разве что вывести на экран). Потому сначала переменную иного типа необходимо перевести в целочисленную. Для этого используется встроенная функция int(), которая принимает только один аргумент – переменную. Рассмотрим использование функции на двух примерах.

Пример 1:

number_str = '302'
print(type(number_str)) # str
number = int(number_str)
print(type(number)) # int

Если мы запустим этот код в консоли, то получим следующий вывод

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

Как видно, первая переменная хранила строку, а вторая превратила эту строку в int. Однако, давайте попробуем поместить в эту строку «левые» символы и снова запустить код.

Интерпретатор выдал ошибку
Интерпретатор выдал ошибку

Когда интерпретатор питона увидел новые символы (qwe), то вызвал ошибку значения. Чтобы поймать эти ошибки можно использовать конструкцию исключений. Покажем ее реализацию в примере №2:

try: # открывает блок кода, в котором может произойти ошибка
    number_str = '302qwe'
    print(type(number_str)) # str
    number = int(number_str)
    print(type(number)) # int
except ValueError: # Здесь указывается ключевое слово except и опционально можно указать, какую ошибку обрабатывать
    print("Неверный формат") # Действия при пойманном исключении

Снова кидаем результат на проверку. 

Теперь ошибка была обработана до появления
Теперь ошибка была обработана до появления

Как мы видим, теперь программа работает корректно, а в моменте, когда должна появиться ошибка, срабатывает исключение и выводится наш текст. Рекомендуем всегда оборачивать функцию int в try-except.

Вещественные

Этот мир слишком продуман, а потому только простейших интов для его познания не хватит. Например, как в int обернуть значение «пи», либо косинус 60 градусов и так далее. Для таких случаев в Python предусмотрен тип данных float. float в питоне это – тип данных, в котором хранятся значения с плавающей точкой, часто называемые вещественными или десятичными дробями. Простая инициализация вещественной переменной выглядит следующим образом:

number_2 = 5.2

Проверяем тип с помощью функции:

print(type(number_2)) # float

На выходе получаем строку: «<class ‘float’>» Обратите внимание, в качестве разделителя целой и дробной части используется точка, а не запятая, как в обычной русской математике. Это объясняется тем, что знак запятой отвечает за перечисление нескольких выражений, а потому не может использоваться в виде разделителя.

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

Метод float

Иногда может возникнуть необходимость перевести иной тип данных в float в python. Как вы уже догадались, для этого в python 3 используется метод float(), который также принимает только один аргумент. По сути, в вещественное значение можно перевести только строку, так как при переводе int в float ничего не произойдет (5 = 5.0). Пример перевода строки в значение с плавающей точкой:

a = "9.8"
print(type(a))
a = float(a)
print(type(a))

Обойдемся без скриншота. И так понятно, что второй вывод показал значение float. Прежде, чем мы пойдем дальше, расскажу об одной интересной особенности языка. Если у вас есть дробный тип данных, а вам нужна только целая его часть, то достаточно просто перевести дробь в целочисленный тип с помощью int. Реализация:

s = 7.6 
print(s) # Вывод дроби
x = int(s)
print(x) # Вывод целочисленный

Результат виден ниже.

Второе число потеряло дробную часть
Второе число потеряло дробную часть

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

Комплексные

Мы не будем долго останавливаться на этой теме, так как она практически бесполезна на ранней стадии изучения языка. Скажем больше, если вы не собираетесь связываться с математическим анализом и высшей математикой, то вам вообще не понадобится эта структура. Если вкратце, комплексные числа – это те, которые состоят из значимой части и мнимой. Выглядят они следующим образом: «5 + 4j» (пример) Чтобы создать такое, достаточно написать его правильно и без скобок:

k = 4 + 5j

Примечательно, что перевести тип complex в int невозможно в явном виде.

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

Начнем с того, что, как и в математике, в python с числами можно производить базовые арифметические операции. К ним относятся:

  • Сложение (+). Пример: x + y или 4 + 3
  • Вычитание (-). Пример: x – y или 4 – 3.
  • Умножение (*) и деление (/). Пример: 5 * 4 / 2
  • Возведение в степень (**). Пример 2 ** 3 = 8 (2 * 2 * 2)
  • Деление без остатка (//). Пример 9 // 4 = 2.
  • Нахождение остатка (%). Пример: 9 % 4 = 1.

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

x = 2 * 3 + 2 # 8

y = 2 * (3 + 2) #10

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

Отрицательные переменные также подчиняются законам арифметики
Отрицательные переменные также подчиняются законам арифметики

Встроенные функции для работы с числами

В чистом питоне существует лишь небольшой список команд, которые не требуют дополнительной установки и импортирования модулей. К ним можно отнести, например, round(), которая призвана просто отбросить дробную часть у типа float. Для расширения диапозона числовых функций необходимо подключить встроенную библиотеку math. Для этого используйте ключевое слово import:

import math

Эта библиотека огромная и позволяет работает с тригонометрическими функциями, логарифмами, корнями, а также позволяет проверить значение переменной. Нет, речь не о float, int и complex. Например, с помощью команды math.isfinite(X) можно проверить, является ли переменная числом вообще.

Довольно часто понадобится обращаться к функции math.fabs(X), которая позволяет получить абсолютное значение. А вот с помощью math.factorial пользователь может найти факториал. Напомним, факториал – это произведение всех значений до указанного значения.

И еще, функции sin, cos, tan, ctg, acos, asin, atan можно высчитывать тригонометрические значения. В общем, функций много, со всем списком можно ознакомиться в официальной документации. Мы продемонстрируем работу модуля на одном примере получения абсолютного значения:

import math
h = -3.4
h = math.fabs(h)
print(h) # 3.4

Примечательно, что math – это не единственная библиотека для чисел. 

Математические операции – самые важные в Python
Математические операции – самые важные в Python

Операции сравнения

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

  • Операция «Больше». Разработчик может проверить, является ли первая переменная больше второй. Пример: x > y # проверка: больше ли x переменной y.
  • Операция «Больше или равно». Необходимо для проверки, является ли x больше или равным y. Пример: x >= y.
  • Операция «Меньше». Работает также, как и «Больше», но в обратную сторону. Пример: x < y.
  • Операция «Меньше или равно». Пример: x <= y.
  • Операция «Равно». Проверяется, идентичны ли два значения. Пример: x == y. Не путайте с одним знаком «=», который отвечает за присвоение, а не сравнивание.
  • Операция «Не равно». Если значения равны, то конструкция возвращает «Ложь», иначе «Истина».

Пример: x != y.

 Если вы только изучаете ЯП, то рекомендуем заострить свое внимание на этой теме. Это позволит лучше понять логику компьютера и более оптимально решать задачи.  Благодарим за прочтение.

Айтистанция
Добавить комментарий

  1. Александр Мамаев

    x = int(7.6)
    print(x) # 7

    С каких пор не вызывается исключение при возведении дробной float в int? Разве так было всегда?

    Ответить