Встроенные функции
Язык 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()
.
Last updated
Was this helpful?