Функция abs() для получения модуля числа
Встроенная функция abs(x) в Python возвращает абсолютное значение аргумента x, который может быть целым или числом с плавающей точкой, или же объектом, реализующим функцию __abs__() . Для комплексных чисел функция возвращает их величину. Абсолютное значение любого числового значения -x или +x — это всегда соответствующее положительное +x.
Аргумент | x | целое число, число с плавающей точкой, комплексное число, объект, реализующий __abs__() |
Возвращаемое значение |
|x| | возвращает абсолютное значение входящего аргумента |
Пример abs() с целым числом
Следующий код демонстрирует, как получить абсолютное значение 42 положительного числа 42.
Получить абсолютный URL из относительного
Он работал, пока были абсолютные урлы в HTML. Сейчас урлы относительные, то есть без домена. Как дополнить этот код чтобы учитывало домен и урл для скачивания картинки был правильным в итоге?
Отслеживать
33.9k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
задан 27 сен 2017 в 10:40
user184069 user184069
53 1 1 серебряный знак 5 5 бронзовых знаков
Я так подозреваю, вопрос нужно переформулировать как «Получить абсолютный URL из относительного»?
27 сен 2017 в 10:49
@andreymal точно
27 сен 2017 в 11:05
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
В питон встроена функция urljoin для этой задачи.
Для корректной обработки относительных путей вам следует знать адрес страницы, с которой вы достали img . Предполагаю, что он вам известен.
from urllib.parse import urljoin # Первый аргумент — адрес страницы, на которой ваша картинка # Второй аргумент — ваш img.get('src') >>> urljoin('http://example.com', 'foo.jpg') 'http://example.com/foo.jpg' >>> urljoin('http://example.com/foo1/foo2/', '../bar/foo.jpg') 'http://example.com/foo1/bar/foo.jpg' >>> urljoin('http://example.com/foo1/foo2/', '/root/foo.jpg') 'http://example.com/root/foo.jpg' >>> urljoin('http://example.com/page/index.html', 'foo.jpg') 'http://example.com/page/foo.jpg' >>> urljoin('http://example.com/foo', 'https://другойдомен.рф/картинка.png') 'https://другойдомен.рф/картинка.png'
(В Python 2 есть urlparse.urljoin , но там она немножко баганута; подробнее на английском SO)
Функция abs() в Python, абсолютное значение числа
Функция abs() используется для возврата абсолютного значения числа.
abs() принимает только один аргумент, число, абсолютное значение которого должно быть возвращено. Аргумент может быть целым числом, числом с плавающей запятой или комплексным числом.
- Если аргумент представляет собой целое число или число с плавающей запятой, abs() возвращает абсолютное значение в виде целого числа или числа с плавающей запятой.
- В случае комплексного числа abs() возвращает только часть величины, которая также может быть числом с плавающей запятой.
Примеры получения абсолютного значение числа.
# Число с плавающей точкой (запятой) >>> f = -54.26 >>> print('=>', abs(f)) # => 54.26 # Целое число >>> i = -94 >>> print('=>', abs(i)) # => 94 # Комплексное число >>> c = (3 - 4j) >>> print('=>', abs(c)) # => 5.0
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
ХОЧУ ПОМОЧЬ
ПРОЕКТУ
Встроенные функции 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
Читайте также: