Язык Python предлагает множество заранее определённых, то есть встроенных функций. Их определения скрыты от глаз программиста в "глубинах" языка, и разработчику достаточно понимать, какие аргументы они принимают и что на выходе возвращают, что составляет их интерфейс.
Мы уже познакомились с рядом встроенных функций, которые касаются ввода-вывода и работы с данными. Это такие функции, как print(), input(), int(), float(), str(), bool(), type(). Полный список встроенных функций Python можно найти в официальной документации: документация.
В этом уроке мы рассмотрим некоторые встроенные функции, разбив их на группы по категориям:
- функции для работы с символами – 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(), нужно помнить, что имени функции соответствует действие. Оно подсказывает, что мы хотим сделать. Ord соответствует получению порядкового номера символа, в то время как chr возвращает сам символ, если передать ему номер.
Функция 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
Обратите внимание, что функция делает именно округление по математическим правилам, а не просто отбрасывает части числа.
>>> 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().