Встроенные функции Python 3 для работы с числами
Python 3 предоставляет большое количество встроенных функций, которые вы можете использовать в программах. Некоторые из них позволяют преобразовывать типы данных, другие предназначены только для одного типа данных (например, строк).
Данное руководство ознакомит с некоторыми встроенными функциями для работы с числовыми типами данных в Python 3:
- abs() – абсолютная величина.
- divmod() – частное и остаток от деления.
- pow() – возведение в степень.
- round() – округление десятичного числа.
- sum() – сумма членов изменяемой последовательности.
Все эти методы делают разработку программы более гибкой.
Абсолютная величина
Встроенная функция abs() возвращает абсолютную величину указанного числа. В математике абсолютная величина, или модуль числа – это неотрицательное число, выражающее расстояние от этого числа до нуля. Например, абсолютная величина 15 – это 15, а -75 – число 75. Абсолютная величина 0 равна 0.
Абсолютная величина – важный аспект вычислений и анализа.
Рассмотрим такой пример: вам нужно проехать 58 км, вместо этого вы проехали 93 км. Чтобы узнать, сколько км осталось, нужно вычесть из расстояния (58 км) количество километров, которое вы проехали (93 км). В данном случае в результате будет отрицательное число. Но проехать отрицательное количество километров невозможно. Попробуйте решить эту задачу с помощью abs():
km_from_origin = 58 # расстояние до пункта назначения
km_travelled = 93 # преодоленное расстояние (больше)
km_to_go = km_from_origin — km_travelled
print(km_to_go) # покажет, сколько км осталось (отрицательное число)
print(abs(km_to_go)) # выведет абсолютную величину отрицательного числа
-35
35
Без функции abs() в результате получится -35, отрицательное число. Функция abs() возвращает положительное число, так как абсолютная величина всегда представлена положительным числом или нулём.
Функция abs() используется в тех ситуациях, когда результат не может быть отрицательным числом.
Частное и остаток от деления
Деление floor (возвращает частное), и деление по модулю (возвращает остаток), тесно связаны между собой, потому функция, которая сочетает в себе обе эти операции, будет очень полезна.
Для этого Python предоставляет встроенную функцию divmod().
Функция divmod() работает с двумя значениями:
Она выполняет такие операции:
Предположим, вы написали книгу, которая состоит из 80000 слов. На одной странице можно разместить либо 300, либо 250 слов. Нужно посчитать, сколько страниц получится в первом и во втором варианте. Попробуйте сделать это с divmod():
words = 80000 # количество слов в книге
per_page_A = 300 # вариант А, 300 слов на странице
per_page_B = 250 # вариант B, 250 слов на странице
print(divmod(words,per_page_A))
print(divmod(words,per_page_B))
(266, 200)
(320, 0)
Если на каждой странице будет по 300 слов, в книге будет 266 страниц, и ещё одна страница будет заполнена на две трети (итого 267 страниц). Если на каждой странице будет по 250 слов, в книге будет ровно 320 страниц.
Функция divmod() может работать с целыми числами и с числами с плавающей точкой. Например:
a = 985.5
b = 115.25
print(divmod(a,b))
(8.0, 63.5)
Где 8.0 – частное, 63.5 – остаток.
Возведение в степень
В Python существует оператор ** для возведения числа в степень. Но также вы можете использовать встроенную функцию pow().
К примеру, вы исследуете бактерии, и вам нужно подсчитать, сколько бактерий будет в конце дня, если утром была одна бактерия, а количество бактерий в час увеличивается вдвое.
hours = 24
total_bacteria = pow(2,hours)
print(total_bacteria)
16777216
К примеру, в обычной математике 3 в кубе записывается так:
Это равно 3 x 3 x 3 (27).
Чтобы вычислить 3³ в Python, нужно записать это так:
Округление десятичного числа
При работе с десятичными числами важно иметь возможность быстро округлить его до N знаков после запятой. Строенная функция round() выполняет эту задачу. При этом ей необходимо два числа: A – число, которое нужно округлить, B – количество знаков после запятой.
i = 17.34989436516001
print(round(i,4))
17.3499
Попробуйте написать простую программу, которая будет подсчитывать чаевые. К примеру, три человека хотят разделить счет в ресторане в $87.93 и оставить 20% чаевых.
bill = 87.93 # общая сумма счёта
tip = 0.2 # 20% чаевых
split = 3 # количество человек
total = bill + (bill * tip)
each_pay = total / split # посчитает, сколько должен заплатить каждый
print(each_pay) # сумма без округления
print(round(each_pay,2)) # округлённая сумма
35.172000000000004
35.17
В результате получилось число с большим количеством десятичных знаков. Функция round() округлила его до двух знаков после запятой.
Чтобы округлить десятичное число до целого числа, задайте 0 в качестве второго параметра (в данном случае тип данных не преобразуется, после запятой будет 0):
Функция round() может работать и с целыми числами. Если в качестве первого параметра задано целое число, в результате функция также вернёт целое число.
Сумма членов
Функция sum() позволяет вычислить сумму членов составных числовых типов данных: списков, кортежей и словарей.
some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9] print(sum(some_floats))
49.5
Точно так же это работает с кортежами и словарями:
print(sum((8,16,64,512))) # сумма членов кортежа
print(sum()) # сумма членов словаря
600
-60
Функции sum() можно задать два аргумента. Второй аргумент – это число, которое нужно прибавить к сумме членов списка/кортежа/словаря. Например:
some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9] print(sum(some_floats, 0.5))
print(sum(,60))
50.0
0
Читайте также:
Как перевернуть знак?
В python, чтобы поменять знак какого-либо числа в переменной num , надо записать -num :
print(-a) # -5 print(-b) # 2
Как сделать положительное число?
Быстрый способ
Чтобы перевести любое число в ранг положительных, нужно написать abs(num) :
print(abs(a)) # 5 print(abs(b)) # 2
Почему этот способ самый быстрый?
Этот способ самый быстрый, т.к. здесь используется встроенная функция, написанная на быстром Си, и она будет быстрее любого другого способа с использованием других встроенных функций.
Математический способ
Это более медленный и длинный в написании способ. Для этой задачи не рекомендую его использовать.
Записать можно по-разному, но я приведу два различных способа:
print((a**2)**0.5) # 5 print((b**2)**0.5) # 2
from math import pow, sqrt print(sqrt(pow(a, 2))) # 5 print(sqrt(pow(b, 2))) # 2
Как это работает?
Чтобы получить модуль числа (то же число, только всегда положительное) число надо возвести в квадрат и извлечь квадратный корень.
В питоне можно по-разному записать эти операции, один способ — ** (возведение в степень), другой — воспользоваться встроенной библиотекой math .
Возведение в 2 степень — возведение в квадрат, а в 0.5 — эквивалентно извлечению квадратного корня.
Также для возведения в степень можно использовать функцию math.pow , а для извлечения квадратного корня — math.sqrt .
Вывод
Наш выбор для создания положительного числа — использовать функцию abs !
Соединяя инверсию знака с созданием положительного числа мы получаем следующее:
Чтобы перевести любое число num в ранг отрицательных, надо записать -abs(num)
print(-abs(a)) # -5 print(-abs(b)) # -2
Ремарки
- Для простоты понимания я опустил деталь, что при использования математического способа результат — float , а не int , и при выводе .0 добавляется к числу.
- Изначально в вопросе просилось сделать отрицательное число.
Число положительное или отрицательное в Python

Статьи
Автор Admin На чтение 2 мин Просмотров 3.1к. Опубликовано 28.02.2023
Введение
В ходе статьи напишем небольшой скрипт на языке программирования Python, для определения того, было введено положительное число, или отрицательное.
Написание кода
Для начала дадим пользователю возможность ввести любое число. При вводе сразу укажем тип данных с плавающей точкой float:
number = float(input('Введите число: '))
Теперь зададим условие, что если введённое число больше нуля, то оно является положительным:
number = float(input('Введите число: ')) if number > 0: print('Число положительное')
Если же условие не сработало, будет проверено следующее условие, что если введённое число меньше нуля, то оно отрицательное:
number = float(input('Введите число: ')) if number > 0: print('Число положительное') elif number < 0: print('Число отрицательное')
Если же оба условия не сработали, это означает что был введён ноль:
number = float(input('Введите число: ')) if number > 0: print('Число положительное') elif number < 0: print('Число отрицательное') else: print('Число является нулём') # Введите число: -10 # Число -10.0 отрицательное
Улучшение кода
Для улучшения кода можем добавить проверку на ввод при помощи конструкции try … except:
try: number = float(input('Введите число: ')) if number > 0: print('Число положительное') elif number < 0: print('Число отрицательное') else: print('Число является нулём') except ValueError: print('Вы ввели не число!')
Ещё можем отформатировать строку, чтобы улучшить вывод:
try: number = float(input('Введите число: ')) if number > 0: print(f'Число положительное') elif number < 0: print(f'Число отрицательное') else: print(f'Число является нулём') except ValueError: print('Вы ввели не число!') # Введите число: 150 # Число 150.0 положительное
Заключение
В ходе статьи мы с Вами написали код на языке программирования Python, который умеет определять, положительное ли число, или отрицательное. Надеюсь Вам понравилась статья, желаю удачи и успехов!
Как в функции преобразовать отрицательное число в положительное?
Нужно найти противоположное число, заданному. Например есть 1, нужно найти -1.
Я пробовал с negate(не получилось так как не знаю как правильно использовать), пробовал через if(но не понимаю какое условие мне написать). Мой код:
if number < 0 return number * -number
Задача с Codewars, начальные условия:
func opposite(number: Double) -> Double >
- Вопрос задан более трёх лет назад
- 1118 просмотров
Комментировать
Решения вопроса 1
не понял а чем number = -number плохо?
или number *= -1
Ответ написан более трёх лет назад
Нравится 1 3 комментария
Sir0zha @Sir0zha Автор вопроса
Ну в принципе, да) А тогда как это записать?
func opposite(number: Double) -> Double var number: Double = 1
return (number = -number)
>
func opposite(number: Double) -> Double