Встроенные функции языка программирования Python
Язык Python включает много уже определенных, то есть встроенных в него, функций. Программист не видит их определений, они скрыты где-то в "недрах" языка. Достаточно знать, что эти функции принимают и что возвращают, то есть их интерфейс.
Ряд встроенных функций, касающихся ввода-вывода и типов данных, мы уже использовали. Это print
, input
, int
, float
, str
, bool
, type
. Перечень всех встроенных в Python функций можно найти в официальной документации по языку: https://docs.python.org/3/library/functions.html.
В этом уроке рассмотрим следующие функции, условно разбив их на группы:
-
функции для работы с символами –
ord
,chr
,len
-
математические функции –
abs
,round
,divmod
,pow
,max
,min
,sum
Функция ord
позволяет получить номер символа по таблице Unicode. Соответственно, принимает она в качестве аргумента одиночный символ, заключенный в кавычки:
>>> ord('z') 122 >>> ord('ф') 1092 >>> ord('@') 64
Функция chr
выполняет обратное действие. Она позволяет получить символ по его номеру:
>>> chr(87) 'W' >>> chr(1049) 'Й' >>> chr(10045) '✽'
Чтобы не путать ord
и chr
, помните, что функция – это действие. Ее имя как бы отвечает на вопрос "Что сделать?". Order – это порядок. Значит, мы хотим получить порядковый номер элемента в ряду. А чтобы получить номер, должны передать символ. Character – это символ. Значит, мы хотим получить символ. Поэтому должны передать порядковый номер.
Функция len
в качестве аргумента принимает сложный объект и подсчитывает в нем количество составляющих его простых элементов. Числа – это простые объекты, их нельзя передавать в len
. Строки можно:
>>> len('abc') 3 >>> s1 = '------' >>> s2 = '_______' >>> len(s1) > len(s2) False >>> len(s1) 6 >>> len(s2) 7
Кроме строк в len
можно передавать другие, еще не изученные нами, структуры данных.
Функция abs
возвращает абсолютное значение числа:
>>> abs(-2.2) 2.2 >>> abs(9) 9
Если требуется округлить вещественное число до определенного знака после запятой, то следует воспользоваться функцией round
:
>>> a = 10/3 >>> a 3.3333333333333335 >>> round(a, 2) 3.33 >>> round(a) 3
Если второй аргумент не задан, то округление идет до целого числа. Есть одна специфическая особенность этой функции. Второй аргумент может быть отрицательным числом. В этом случае округляться начинают единицы, десятки, сотни и т. д., то есть целая часть:
>>> round(5321, -1) 5320 >>> round(5321, -3) 5000 >>> round(5321, -4) 10000
Функция именно округляет согласно правилу округления из математики, а не отбрасывает. Поэтому 5 тысяч неожиданно округляются до десяти.
>>> round(3.76, 1) 3.8 >>> round(3.72, 1) 3.7 >>> round(3.72) 4 >>> round(3.22) 3
Если нужно просто избавиться от дробной части без округления, следует воспользоваться функцией int
:
>>> int(3.78) 3
Нередко функцию round
используют совместно с функцией print
, избегая форматирования вывода:
>>> a = 3.45673 >>> print("Number: %.2f" % a) Number: 3.46 >>> print("Number:", round(a, 2)) Number: 3.46
В последнем случае код выглядит более ясным.
Функция divmod
выполняет одновременно деление нацело и нахождение остатка от деления:
>>> divmod(10, 3) (3, 1) >>> divmod(20, 7) (2, 6)
Возвращает она кортеж. В некоторых других языках встречаются две отдельные функции: div
и mod
. Первая делит нацело, вторая находит остаток от целочисленного деления (деления по модулю). В Python и многих других языках для этого используются специальные символы-операнды:
>>> 10 // 3 3 >>> 10 % 3 1
Функция pow
возводит в степень. Первое число – основание, второе – показатель:
>>> pow(3, 2) 9 >>> pow(2, 4) 16
То же самое можно проделать так:
>>> 3**2 9 >>> 2**4 16
Однако pow
может принимать третий необязательный аргумент. Это число, на которое делится по модулю результат возведения в степень:
>>> pow(2, 4, 4) 0 >>> 2**4 % 4 0
Преимуществом первого способа является его более быстрое выполнение.
Функции max
, min
и sum
находят соответственно максимальный, минимальный элемент и сумму элементов аргумента:
>>> max(10, 12, 3) 12 >>> min(10, 12, 3, 9) 3 >>> a = (10, 12, 3, 10) >>> sum(a) 35
В sum
нельзя передать перечень элементов, должна быть структура данных, например, кортеж. В min
и max
также чаще передают один так называемый итерируемый объект:
>>> max(a) 12
Практическая работа
-
Напишите программу, которая в цикле запрашивает у пользователя номера символов по таблице Unicode и выводит соответствующие им символы. Завершает работу при вводе нуля.
-
Напишите программу, которая измеряет длину введенной строки. Если строка длиннее десяти символов, то выносится предупреждение. Если короче, то к строке добавляется столько символов
*
, чтобы ее длина составляла десять символов, после чего новая строка должна выводиться на экран. -
Напишите программу, которая запрашивает у пользователя шесть вещественных чисел. На экран выводит минимальное и максимальное из них, округленные до двух знаков после запятой. Выполните задание без использования встроенных функций
min
иmax
.
Примеры решения и дополнительные уроки в pdf-версии курса