Найти в Дзене
Просто про Python

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

Оглавление

Аннотация

В этом уроке мы познакомимся с типами данных, научимся работать с числами и узнаем о простейших функциях.

Повторение

На прошлом уроке мы рассмотрели условный оператор, который позволяет выполнять различные ветки кода, в зависимости от заданных условий. Научились составлять сложные условия при помощи операций not, and и or.

1. Типы данных. Числовые типы

Пока единственным типом данных, с которым мы работали, были строки. Теперь нам предстоит рассмотреть целые и вещественные числа. У каждого элемента данных, который встречается в программе, есть свой тип. (В случае Python более правильный термин — «класс объекта», но об этом мы будем говорить гораздо позже.)

Например, «привет» — это строка, а вот 15.3 — это число (дробное). Даже если данные не записаны прямо в программе, а получаются откуда-то ещё, у них есть совершенно определённый тип. Например, на место input() всегда подставляется строка, а 2 + 2 даст именно число 4, а не строку «4».

Пользователь может ввести с клавиатуры какие-то цифры, но в результате input() вернёт строку, состоящую из этих цифр. Если мы попытаемся, например, прибавить к этой строке 1, то получим ошибку.

Давайте попробуем это сделать:

a = input() print(a + 1)

Сохраните и запустите программу.

Введите любое число и посмотрите, что получится.

Ошибка возникнет потому, что в переменную а у нас попадает строка, а в функции print мы пытаемся эту строку из переменной а и число 1. Исправьте программу так, чтобы она работала.

А если нам надо работать с числами? Мы пока будем рассматривать целые и вещественные числа.

Важно

Когда речь идет о числовых данных — они записываются без кавычек.
А для вещественных чисел — для разделения целой и дробной части используют
точку.

На прошлом занятии мы складывали две строки:

print('10' + '20')

И получали результат — строку «1020».

Давайте попробуем в этом примере убрать кавычки. В таком случае речь пойдёт уже не о строках, а о двух целых числах.

И результатом функции print(10 + 20) будет целое число 30.

А если мы попробуем сложить два вещественных числа print(10.0 + 20.0), то результатом будет вещественное число 30.0.

Попробуйте предположить что будет, если сложить вещественное число и целое число print(10.0 + 20). Почему?

Мы выполняли сложение двух чисел внутри функции print, но мы можем переменным давать нужные значение и выполнять действия над переменными.

Давайте напишем программу, которая задаст нужные значения двум переменным (10 и 20), потом вычислит их сумму, положит это значение в третью переменную и выведет на экран полученный результат. Допишите начальные строки, чтобы программа решала поставленную задачу:

...
print(summ)

Важно

Обратите внимание, что если в качестве имени переменной для суммы взять sum, то оно выделяется цветом. Это означает, что такое имя знакомо среде и принадлежит какой-то функции, в качестве имени переменной его лучше не использовать.

Как складывать два числа мы научились. Еще числа можно вычитать, умножать, делить, возводить в степень, получать целую часть от деления и остаток от деления нацело. Давайте разберём эти операции на примерах.

print(30 - 10) print(30.0 - 10) print(3 * 3)

С вычитанием и умножением все понятно, они аналогичны сложению.

Возведение в степень обозначается двумя звёздочками **, которые должны записываться без разделителей.

print(9 ** 2)

Обратите внимание, что результат деления — всегда вещественный, даже если мы делим два целых числа, которые делятся нацело.

print(10 / 2)

Попробуйте поделить на 0. Посмотрите, как будет выглядеть ошибка деления на 0.

2. Операции над числами. Целочисленное деление

Важно

Для реализации целочисленного деления существуют два действия — деление нацело и остаток от деления нацело. Получение целой части от деления обозначается как удвоенный знак деления //, а остатка от деления нацело — %.

Давайте подробнее разберём эти операции. Что будет выведено в результате этих действий?

print(10 // 3, 10 % 3) print(10 // 5, 10 % 5) print(10 // 11, 10 % 11)

Допустим, вам известны результаты a // b, a % b и число b, напишите формулу, как найти число a?

Давайте проверим вашу формулу:

a = 10 b = 3 print(….А сюда напишем формулу…)

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

А теперь, немного разобравшись с этими операциями, попробуйте предположить, что выведется на экран после выполнения следующего куска кода:

print(10 // 3, 10 % 3) print(-10 // 3, -10 % 3)

Определите, что будет выведено на экран?

a = 4 b = 15 c = b / 5 * 3 - a
print(c)

3. Приоритет операций

Мы уже с вами изучили несколько типов операторов в языке Python:

— операторы присваивания (=, +=, -=, *= и т.д.)

— операторы сравнения (==, !=, >, <, >=, <=)

— арифметические операторы (+, -, *, //, %, **)

— логические операторы (and, or, not)

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

Итак, приоритет выполнения операторов в Python от наивысшего (выполняется первым) до наинизшего:

1. Возведение в степень (**)

2. Унарный минус (-). Используется для получения, например, противоположного числа.

3. Умножение, деление (* / % //)

4. Сложение и вычитание (+ -)

5. Операторы сравнения (<= < > >=)

6. Операторы равенства (== !=)

7. Операторы присваивания (=)

8. Логические операторы (not or and)

PEP 8

Если используются операторы с разными приоритетами, попробуйте добавить пробелы вокруг операторов с самым низким приоритетом. Руководствуйтесь своими собственными суждениями, но никогда не используйте более одного пробела и всегда используйте одинаковое количество пробелов по обе стороны бинарного оператора.

4. Простейшие функции

С действиями над числами определились, осталось разобраться, как получать числа из ввода. Здесь нам поможет важное новое понятие — функция. В математике функция из одного числа (или даже нескольких) делает другое.

Функция

В программировании (и в Python в частности): функция — это сущность, которая из одного (или даже нескольких) значений делает другое. При этом она может ещё и выполнять какие-то действия. Например, есть функция модуля у = |x|, аналогично в Python есть функция y = abs(x). Но функции в Python необязательно принимают только числа.

Для того, чтобы вводить числа с клавиатуры и далее работать с ними, нам необходимо найти функцию, которая из строки делает число. И такие функции есть!

Важно

Тип данных целых чисел в Python называется int, дробных чисел — float.

Одноимённые функции принимают в качестве аргумента строку и возвращают число, если в этой строке было записано число (иначе выдают ошибку):

a = input() b = int(a) print(b + 1)

Или можно написать даже так:

a = int(input())

что будет означать — получи строку из ввода, сделай из неё целое число и результат помести в переменную а.

И тогда предыдущая программа может быть записана в виде:

a = int(input()) print(a + 1)

Но можно сократить код еще, написав вот так:

print(int(input()) + 1)

Функция int может быть применена и для получения целого числа из вещественного — в таком случае, дробная часть будет отброшена (без округления).

Например,

print(int(20.5 + 34.1))

выдаст на экран число 54, хотя если сложить эти числа и не отправлять их в фунцкию int, результат будет 54.6.

В Python cуществует огромное количество различных функций, мы будем знакомиться с ними постепенно. Так, например, для строки можно так же определить её длину.

Важно

Длина строки — это количество символов в строке.

Для определения длины строки используется стандартная функция Python len().

На примере функции len разберемся с основными понятиями, связанными с использованием функций. Изучите код:

word = input() length = len(word) print('Вы ввели слово длиной', length, 'букв.')

Важно

Когда мы в программе используем функцию, это называется «вызов функции». Вызов функции устроен так: пишем имя функции — len, а затем в скобках те данные, которые мы передаём этой функции, чтобы она что-то с ними сделала. Такие данные называются аргументами.

В нашем примере данные в скобках должны быть строкой. Мы выбрали в качестве данных значение переменной word, которое пользователь до этого ввёл с клавиатуры. То есть значение переменной word выступает здесь в роли аргумента. А функция len выдаёт длину этой строки. Если пользователь ввёл, например, «привет», то в word оказывается равно «привет», и на место len(word) подставляется длина строки «привет», то есть 6.

Обратите внимание: каждый раз, когда мы пишем имя переменной (кроме самого первого раза — в операторе присваивания слева от знака =), вместо этого имени интерпретатор подставляет значение переменной.

Важно

Точно так же на место вызова функции (то есть имени функции и её аргументов в скобках) подставляется результат её работы — это называется возвращаемое значение функции.

Таким образом, функция len возвращает длину своего аргумента. input — тоже функция (отсюда скобки), она не принимает никаких аргументов, зато считывает строку с клавиатуры и возвращает её.

print — тоже функция, она не возвращает никакого осмысленного значения, зато выводит свои аргументы на экран. Эта функция может принимать не один аргумент, а сколько угодно. Несколько аргументов одной функции следует разделять запятыми.

На самом деле, функция сама по себе — это фактически небольшая программа, но об этом позже.

Функции безразлично происхождение значений, которые ей передали в качестве аргумента. Это может быть значение переменной, результат работы другой функции или записанное прямо в коде значение:

print('Это слово длиной', len('абракадабра'), 'букв.')

Обратите внимание, что в предыдущем примере значение переменной word вообще никак не изменилось от вызова функции len. C другой стороны, вызов функции может стоять где угодно, не обязательно сразу класть возвращаемое значение в переменную.

Как есть функция int, которая пытается сделать из того, что ей передали, целое число, так же есть и функция str, которая возвращает строку из тех данных, что в нее передали.

print(str(10) + str(20)) # выведет ‘1020’
print(int('10') + int('20')) # выведет 30

Каждый раз, когда вы пишете программу, важно понимать, какой тип имеет каждое значение и каждая переменная.

5. Обмен значениями переменных

Мы изучили операции с различными типами данных.

Давайте попробуем написать программу, которая поменяет местами содержимое переменных а и b. Пусть есть такой код:

a = 3 b = 5 ...
...
print(a) print(b)

Что надо вписать в пропущенные места, чтобы в а лежало 5, а в b лежало 3? При этом, числами 3 и 5 пользоваться нельзя.

Как один из вариантов — можно использовать дополнительную переменную:

a = 3 b = 5 с = a
a = b
b = c
print(a) print(b)

А теперь попробуйте написать вариант без дополнительной переменной, через сумму двух чисел.

Но нам с вами очень повезло, что мы изучаем язык Python, потому что он и поддерживает более простой вариант записи:

a = 3 b = 5 a, b = b, a
print(a) print(b)

Значения переменных, которые расположены справа от знака «присвоить», в указанном порядке помещаются в переменные слева, в порядке их указания.

Так, используя множественное присваивание, можно задавать нескольким переменным одно значение:

a = b = c = 5

Предыдущая статья - https://dzen.ru/media/id/637a1cf2e1c5d415d43749c7/uslovnyi-operator-637a1f5cbe4db80030062b82

Наука
7 млн интересуются