Python | Операции с числами

2. Действительные числа

В этом разделе речь пойдет о действительных числах, имеющих тип .

Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возращаемый функцией необходимо преобразовывать к типу :

1.492x = float(input()) print(x)

Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русских текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись «с плавающей точкой» (также называемая «научная» запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·1011, а масса молекулы воды 2.99·10-23.

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

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

Напомним, что результатом операции деления всегда является действительное число (), в то время как результатом операции является целое число ().

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

Целочисленное деление Python дает float

Разделить строку на список подстрок в python

Если нужно распарсить строку по какому-то символу, то в простом случае можно воспользоваться функцией split(separator=’ ‘):

a = ‘python,django,templates’ b = a.split(‘,’) # b = [‘python’, ‘django’, ‘templates’]

Но если у нас задача посложнее, например:

a = ‘python, django, template tags’ b = a.split(‘,’) # b = [‘python’, ‘ django’, ‘ template tags’]

то появится проблема лишних пробелов.

Итак, рассмотрим следующую задачу: есть форма с одним полем categories, данные которого можно записывать как через запятую, так и каждую с новой строки. Нужно сформировать список введённых данных. Например, данные поля имеют вид:

python, django cms, template tags templates

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

data = form.cleaned_data.get(‘categories’) categories = [] rows = data.splitlines() # разбиваем на строки for row in rows: if row: # избавляемся от пустых строк [categories.append(‘ ‘.join(item.split())) for item in row.split(‘,’) if item]

Результат выполнения кода:

categories = [‘python’, ‘django cms’, ‘template tags’, ‘templates’]

Немного прокомментирую код:

  • Для разбиения строк используем splitlines(), который — похож на split(), но использует в качестве разделителя символы перевода каретки (\n и \r).
  • Условием if row отсекаем пустые строки.
  • Последней строкой кода мы используем генератор списка (без присваивания к переменной — оно нам не надо), чтобы компактнее записать код:
    • row.split(‘,’) разбивает строку, используя запятую в качестве разделителя.
    • ‘ ‘.join(item.split()) удаляет лишние пробелы между словами

Данный код не претендует на идеальность, но он достаточно читабельный — может, кому и пригодится!

Оцените статью

4,7 из 5 (всего 3 оценки)

Автор статьи

Мальцев Артём

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

Права на использование данной статьи, расположенной на настоящей странице http://vivazzi.ru/it/split-python/:

Разрешается копировать статью с указанием её автора и ссылки на оригинал без использования параметра в теге . Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="http://vivazzi.ru/it/split-python/">http://vivazzi.ru/it/split-python/</a>

Подробнее: Правила использования сайта

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

Операции с числами

Последнее обновление: 20.06.2017

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

Python поддерживает все распространенные арифметические операции:

  • +

    Сложение двух чисел:

    print(6 + 2) # 8

  • Вычитание двух чисел:

    print(6 — 2) # 4

  • *

    Умножение двух чисел:

    print(6 * 2) # 12

  • /

    Деление двух чисел:

    print(6 / 2) # 3.0

  • //

    Целочисленное деление двух чисел:

    print(7 / 2) # 3.5 print(7 // 2) # 3

    Данная операция возвращает целочисленный результат деления, отбрасывая дробную часть

  • **

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

    print(6 ** 2) # Возводим число 6 в степень 2. Результат — 36

  • %

    Получение остатка от деления:

    print(7 % 2) # Получение остатка от деления числа 7 на 2. Результат — 1

    В данном случае ближайшее число к 7, которое делится на 2 без остатка, это 6. Поэтому остаток от деления равен 7 — 6 = 1

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

Операции

Направление

**

Слева направо

* / // %

Слева направо

+ —

Слева направо

Пусть у нас выполняется следующее выражение:

number = 3 + 4 * 5 ** 2 + 7 print(number) # 110

Здесь начале выполняется возведение в степень (5 ** 2) как операция с большим приоритетом, далее результат умножается на 4 (25 * 4), затем происходит сложение (3 + 100) и далее опять идет сложение (103 + 7).

Чтобы переопределить порядок операций, можно использовать скобки:

number = (3 + 4) * (5 ** 2 + 7) print(number) # 224

Следует отметить, что в арифметических операциях могут принимать участие как целые, так и дробные числа. Если в одной операции участвует целое число (int) и число с плавающей точкой (float), то целое число приводится к типу float.

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

Ряд специальных операций позволяют использовать присвоить результат операции первому операнду:

  • +=

    Присвоение результата сложения

  • -=

    Присвоение результата вычитания

  • *=

    Присвоение результата умножения

  • /=

    Присвоение результата от деления

  • //=

    Присвоение результата целочисленного деления

  • **=

    Присвоение степени числа

  • %=

    Присвоение остатка от деления

Примеры операций:

number = 10 number += 5 print(number) # 15 number -= 3 print(number) # 12 number *= 4 print(number) # 48

Функции преобразования чисел

Ряд встроенных функций в Python позволяют работать с числами. В частности, функции int() и float() позволяют привести значение к типу int и float соответственно.

Например, пусть у нас будет следующий код:

first_number = «2» second_number = 3 third_number = first_number + second_number

Мы ожидаем, что «2» + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И чтобы все заработало как надо, необходимо привести строку к числу с помощью функции int():

first_number = «2» second_number = 3 third_number = int(first_number) + second_number print(third_number) # 5

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

first_number = 2.0001 second_number = 5 third_number = first_number / second_number print(third_number) # 0.40002000000000004

В данном случае мы ожидаем получить число 0.40002, однако в конце через ряд нулей появляется еще какая-то четверка. Или еще одно выражение:

print(2.0001 + 0.1) # 2.1001000000000003

В этот случае для округления результата мы можем использовать функцию round():

first_number = 2.0001 second_number = 0.1 third_number = first_number + second_number print(round(third_number, 4)) # 2.1001

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

Представление числа

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

Для определения числа в двоичной системе перед его значением ставится 0 и префикс b:

x = 0b101 # 101 в двоичной системе равно 5

Для определения числа в восьмеричной системе перед его значением ставится 0 и префикс o:

a = 0o11 # 11 в восьмеричной системе равно 9

Для определения числа в шестнадцатеричной системе перед его значением ставится 0 и префикс x:

y = 0x0a # a в шестнадцатеричной системе равно 10

И с числами в других системах измерения также можно проводить арифметические операции:

x = 0b101 # 5 y = 0x0a # 10 z = x + y # 15 print(«{0} in binary {0:08b} in hex {0:02x} in octal {0:02o}».format(z))

Для вывода числа в различных системах исчисления используются функция format, которая вызывается у строки. В эту строку передаются различные форматы. Для двоичной системы «{0:08b}», где число 8 указывает, сколько знаков должно быть в записи числа. Если знаков указано больше, чем требуется для числа, то ненужные позиции заполняются нулями.

Целочисленное деление на отрицательное число

Для шестнадцатеричной системы применяется формат «{0:02x}». И здесь все аналогично — запись числа состоит из двух знаков, если один знак не нужен, то вместо него вставляется ноль. А для записи в восьмеричной системе испольуется формат «{0:02o}».

Результат работы скрипта:

15 in binary 00001111 in hex 0f in octal 17

НазадСодержаниеВперед

Добавить комментарий

Закрыть меню