Найти в Дзене

Встроенные функции в Python

На сегодняшнем занятии поговорим про встроенные функции Python. Если на прошлых занятиях мы учились объявлять собственные функции, вызывать их, передавать им какие-то значения, то на этом занятии и на следующем будем работать уже с готовыми функциями. Существует перечень функций, которые встречаются при попытке преобразовать один тип данных к другому: #int() - целое число
#float() - число с плавающей запятой
#bool() - логические значения
#str() - строки
#list() - список
#tuple() - кортеж
#dict() - словарь
#set() - множество Запомнить их нетрудно, потому что название функции соответствует названию типа данных. Данные функции используются часто для того, чтобы привести какой-то тип данных к нужному нам типу. Например, вспомним с какой функцией мы работали достаточно часто - input(), запрос ввода данных от пользователя. Когда нам необходимо, чтобы пользователь ввёл именно число, то используется запись такого рода: int(input()). По сути, запрашивается ввод данных от человека. Всё, что вв

На сегодняшнем занятии поговорим про встроенные функции Python.

Если на прошлых занятиях мы учились объявлять собственные функции, вызывать их, передавать им какие-то значения, то на этом занятии и на следующем будем работать уже с готовыми функциями.

Существует перечень функций, которые встречаются при попытке преобразовать один тип данных к другому:

#int() - целое число
#float() - число с плавающей запятой
#bool() - логические значения
#str() - строки
#list() - список
#tuple() - кортеж
#dict() - словарь
#set() - множество

Запомнить их нетрудно, потому что название функции соответствует названию типа данных.

Данные функции используются часто для того, чтобы привести какой-то тип данных к нужному нам типу. Например, вспомним с какой функцией мы работали достаточно часто - input(), запрос ввода данных от пользователя. Когда нам необходимо, чтобы пользователь ввёл именно число, то используется запись такого рода: int(input()). По сути, запрашивается ввод данных от человека. Всё, что вводит пользователь, изначально принадлежит к строковому типу данных, а потом всё, что этот человек ввёл приводится к целому числу.

Если нам надо целое число преобразовать в число с плавающей запятой, то воспользуемся инструкцией float().

Когда мы захотим получить из числа допустим или из какой-то строки значение типа True или False, то воспользуемся bool(). С ней следует ознакомиться немного подробнее. Допустим, у нас есть какая-то строка(рис.1). Если передадим и воспользуемся функцией bool(), то получим True(рис.2). Когда передадим пустую строку, получим False. При работе с числами любые числа будут давать нам Тrue, за исключением нулей(рис.3). То есть данные сведения можно использовать для оформления различных условий. Так или иначе, у нас могут быть неявные преобразования и число неявно можем преобразовать в значение True или False.

Рис.1

-2

Рис.2

-3

Рис.3

Пример. Отсутствие типа будет возвращать нам False. При написании None будет False(рис.4).
None — это отсутствие значения. Такое часто бывает, когда мы какой-то параметр передаём и выставляем ему значение по умолчанию None. Зарезервировали место, зарезервировали имя для определённого параметра, но в будущем нам, возможно, пригодится с ним как-то работать. Можно создать дополнительное условие, по которому будем определять то, что данный параметр существует или нет. Если в программе написать какой-нибудь type=None и сделать какое-нибудь условие, например, If tуре и вывести что-то, например “Ок”, то при запуске результата не будет, поскольку выполняется неявное преобразование(рис.5). Получается переменную tуре проверяем на наличие значения: напишем 1 - программа выполнится(рис.6), напишем 0 - программа не выполнится. Происходят неявные преобразования. Они сокращают нам запись. Но здесь нужно быть внимательным с тем, как вы обозначите это условие.

-4

Рис.4

-5

Рис.5

-6

Рис.6

В принципе, остальные функции достаточно просто работают. Если нам нужен список, мы можем использовать инструкцию list() для формирования списка. Воспользуемся точно также интерактивным режимом. Единственное, что сюда нужно передавать перебираемые какие-то значения. Например, передали строку и на основе этой строки создался список. Захотели сделать кортеж, передали строку, получили кортеж с элементами из этой строки(рис.7). То есть это всё у нас работает замечательно.

-7

Рис.7

Давайте разберем практический пример и затронем несколько функций, которые раньше не использовали.

Представим, что у нас есть список salary(). Он будет содержать в себе зарплаты сотрудников в определённой компании. Допустим, эти зарплаты будут в долларах. Они имеют разную величину, потому что сотрудники находятся на разных должностях и имеют разные значения. Некоторые зарплаты будут целыми, другие зарплаты будут содержать ещё и центы(рис.8).

-8

Рис.8

Данный список содержит определённое количество элементов. Наша задача написать какую-то гибкую, динамическую программу, которую в будущем можно будет как-то развивать. Суть задачи состоит в том, что нам необходимо найти среднюю, максимальную, минимальную зарплату в компании. Также необходимо сделать из этого словарь. Он будет содержать имя сотрудника и соответствующую зарплату.

В первую очередь займёмся получением количества зарплат. Чтобы узнать количество элементов в списке, мы можем воспользоваться специальной функцией len() - в результате возвращает длину передаваемой последовательности. В эту инструкцию len() передали список с зарплатами (salaty=[2300, 1800.80, 5000, 1234.58, 7500.12]) и получили значение 5(рис.9).

-9

Рис.9

Чтобы найти какое-то среднее значение, нам нужно всех их просуммировать и разделить на количество элементов. В этом случае можем воспользоваться циклом for, можем создать какой-то счётчик, пробежаться по каждому элементу и прибавлять значение этого элемента к нашей переменной. В конечном счёте всё-таки получим сумму элементов. Но есть решение гораздо быстрее. Воспользуемся функцией sum(), куда передадим список и получим сумму всех элементов. Сумма всех зарплат составляет 17835,5, также 5 будем считать, что это количество сотрудников(рис.10). Чтобы найти среднее значение, просто разделим сумму на количество сотрудников (sum(salary)/len(salary)). При запуске выходит, что средняя зарплата в компании составляет 3567.1(рис.11).

-10

Рис.10

-11

Рис.11

Теперь давайте найдём с вами максимальное и минимальное значение. Чтобы найти максимальное, будем использовать функцию max(). Она находит максимальный элемент из переданной в неё последовательности. Напишем, что это максимальная зарплата компании. Данную строчку копируем, заново вставляем и ставим функцию min(). Также пишем, что это минимальная зарплата компании. Запускаем, получаем результат: 7500,12 - максимальная зарплата, и 1234,58 - это минимальная зарплата в компании(рис.12).

-12

Рис.12

Представим, что бухгалтеры немного ошиблись, либо же значения после точки много, то при вычислениях выйдет неприятный результат(рис.13). Можем от этого избавиться, приведя это в целое число, но всё-таки нас интересует количество центов. Оно будет иметь определённое значение.

-13

Рис.13

Чтобы работать со знаками после точки, можем воспользоваться функцией round(). Данная функция принимает два параметра — само число и количество знаков после запятой. По сути, сейчас мы передали в функцию значение, получившееся в результате деления суммы на количество элементов и число 2(рис.14). Смотрим на результат — это средняя зарплата в компании(рис.15). Два знака после запятой даст нам два, но так как последняя цифра 0, поэтому его не видно. Тем не менее тут два знака, то есть 3567. и 10 центов. Три знака после запятой даст нам три(рис.16).

-14

Рис.14

-15

Рис.15

-16

Рис.16

Давайте то же самое сделаем и с максимальной зарплатой, и с минимальной. Здесь будет уже видно, как это работает. Запускаем(рис.17). Получается, что с помощью функции round() получилось округлить и избавиться от лишних знаков после точки.

-17

Рис.17

Теперь нам нужно создать некий словарик, содержащий в себе имена и зарплаты. Допустим, у нас есть имена сотрудников: Денис, Антон, Егор, Катя, Женя. Далее нам нужно как-то их объединить. Здесь подразумевается, что в списке зарплат и в списке с именами пять значений, и зарплата соответствует определённому имени: 2300 будет соответствовать Денису, Антону - 1800, Егору - 5000, Кате - 1234, Жене - 7500.

Для данной задачи создадим какую-нибудь переменную zipped и воспользуемся функцией zip(). Передадим туда имена и зарплаты. Если мы выведем эту переменную, то получим “zip object at ...”, то есть эта функция вернула нам объект(рис.18). С этим объектом можно работать так, как нам необходимо. Например, воспользуемся функцией list(), получим список(рис.19). У нас получилось слияние двух списков: получили список, в котором элементами являются кортежи со значениями из первого списка и из второго.

-18

Рис.18

-19

Рис.19

Если хотим этот объект привести, например, в словарь, то получим словарь(рис.20) В нем значениями будут элементы из первого списка и ключами — элементы из второго списка.

-20

Рис.20

Теперь, получается, можно всё это дело обернуть в словарь и доставать зарплаты определенных сотрудников, обращаясь по ключу. Теперь скажем, что это зарплата Дениса, только не из списка names, а уже из zipped. Получается 2300 — это зарплата Дениса(рис.21).

-21

Рис.21