Встроенные функции
Язык 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-версии курса
X Скрыть Наверх
Python. Введение в программирование
Основные типы данных в Python для начинающих
При изучении языка программирования одна из первых вещей, с которой вы столкнётесь, — типы данных. Сегодня мы расскажем об одних из наиболее важных типов данных в Python.
Каждое значение в Python имеет тип. Поскольку всё в Python — объекты, типы являются классами, а значения — экземплярами (объектами) этих классов.
Прим. перев. В Python 2 типы и классы — разные понятия, в то время как в Python 3 это одно и то же.
В Python есть разные типы, давайте рассмотрим самые основные.
Числа
Целые числа, числа с плавающей запятой и комплексные числа относятся к группе чисел. В Python они представлены классами int , float и complex .
Мы можем использовать функцию type() , чтобы узнать класс переменной или значения, и функцию isinstance() для проверки принадлежности объекта определённому классу:
>>> a = 5 >>> print(a, "is of type", type(a)) 5 is of type >>> a = 2.0 >>> print(a, "is of type", type(a)) 2.0 is of type >>> a = 1+2j >>> print(a, "is complex number?", isinstance(1+2j, complex)) (1+2j) is complex number? True
Целые числа могут быть любой длины, они ограничиваются лишь доступной памятью.
Числа с плавающей запятой имеют ограниченную точность. Визуально разницу между целым числом и числом с плавающей запятой можно заметить в консоли по наличию точки: 1 — целое число, 1.0 — с плавающей запятой.
Комплексные числа записываются в форме x+yj , где x — действительная часть числа, а y — мнимая. Вот несколько примеров:
>>> a = 1234567890123456789 >>> a 1234567890123456789 >>> b = 0.1234567890123456789 >>> b 0.12345678901234568 >>> c = 1+2j >>> c (1+2j)
Обратите внимание, что значение переменной b было усечено.
Списки
Список представляет собой упорядоченную последовательность элементов. Он очень гибкий и является одним из самых используемых типов в Python. Элементы списка не обязательно должны быть одного типа.
Объявить список довольно просто. Внутрь квадратных скобок помещаются элементы списка, разделённые запятой:
>>> a = [1, 2.2, 'python']
Мы можем использовать оператор [] для извлечения элемента (такая операция называется “доступ по индексу”) или диапазона элементов (такая операция назвается “извлечение среза”) из списка. В Python индексация начинается с нуля:
>>> a = [5,10,15,20,25,30,35,40] >>> print("a[2] =", a[2]) a[2] = 15 >>> print("a[0:3] =", a[0:3]) a[0:3] = [5, 10, 15] >>> print("a[5:] =", a[5:]) a[5:] = [30, 35, 40]
Списки являются изменяемым типом, т.е. значения его элементов можно изменить:
>>> a = [1,2,3] >>> a[2] = 4 >>> a [1, 2, 4]
Кортежи
Так же как и список, кортеж (tuple) является упорядоченной последовательностью элементов. Вся разница заключается в том, что кортежи неизменяемы.
Кортежи используются для защиты данных от перезаписи и обычно работают быстрее, чем списки, т.к. их нельзя изменять.
Для создания кортежа нужно поместить внутрь круглых скобок элементы, разделённые запятой:
>>> t = (5,'program', 1+3j)
Мы можем использовать оператор извлечения среза [] для извлечения элементов, но мы не можем менять их значения:
>>> t = (5,'program', 1+3j) >>> print("t[1] =", t[1]) t[1] = program >>> print("t[0:3] =", t[0:3]) t[0:3] = (5, 'program', (1+3j)) # Приводит к ошибке, т.к. # кортежи неизменяемы >>> t[0] = 10
Строки
Строка представляет собой последовательность символов. Мы можем использовать одинарные или двойные кавычки для создания строки. Многострочные строки можно обозначить тройными кавычками, »’ или «»» :
>>> s = "Простая строка" >>> s = '''многострочная строка'''
Как и в случае со списками и кортежами, мы можем использовать оператор [] и со строками. Стоит отметить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.
Множества
Множество является неупорядоченной уникализированной последовательностью. Объявляется множество с помощью элементов, разделённых запятой, внутри фигурных скобок:
>>> a = # вывод переменной множества >>> print("a =", a) a = # тип данных переменной а >>> print(type(a))
Над множествами можно выполнять такие операции, как объединение и пересечение. Т.к. элементы в множестве должны быть уникальны, они автоматически удаляют дубликаты:
>>> a = >>> a
Поскольку множество является неупорядоченной последовательностью, оператор извлечения среза здесь не работает:
>>> a = >>> a[1] Traceback (most recent call last): File "", line 1, in TypeError: 'set' object does not support indexing
Словари
Словари — неупорядоченные наборы пар ключ-значение.
Они используются, когда нужно сопоставить каждому из ключей значение и иметь возможность быстро получать доступ к значению, зная ключ. В других языках словари обычно называются map , hash или object . Словари оптимизированы для извлечения данных. Чтобы извлечь значение, нужно знать ключ.
Словарь объявляется парами элементов в форме ключ:значение, заключенными в фигурные скобки:
>>> d = >>> type(d)
Значение может быть любого типа, а вот ключ — только неизменяемого.
Мы используем ключ, чтобы получить соответствующее ему значение. Но не наоборот:
>>> d = >>> print("d[1] =", d[1]); d[1] = value >>> print("d['key'] =", d['key']); d['key'] = 2 # Приводит к ошибке >>> print("d[2] =", d[2]);
Преобразование типов данных
Мы можем преобразовывать значения из одного типа в другой с помощью таких функций, как int() , float() , str() и т.д.
>>> float(5) 5.0
При преобразовании числа с плавающей запятой в целое будет утеряна часть после запятой:
>>> int(10.6) 10 >>> int(-10.6) -10
Для преобразования из/в строку должны использоваться совместимые значения:
>>> float('2.5') 2.5 >>> str(25) '25' >>> int('1p') Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '1p'
Можно даже преобразовывать одну последовательность в другую:
>>> set([1,2,3]) >>> tuple() (5, 6, 7) >>> list('hello') ['h', 'e', 'l', 'l', 'o']
Прим. перев. Для преобразования списка из символов обратно в строку нельзя вызвать str(список) , так как в результате мы получим строковое представление списка (наподобие того, что мы видим, когда выводим список на экран). Вместо этого нужно сделать следующее:
''.join(['h', 'e', 'l', 'l', 'o'])
Для преобразования в словарь каждый элемент последовательности должен быть парой:
>>> dict([[1,2],[3,4]]) >>> dict([(3,26),(4,44)])
Типы данных. Математические операторы. Программирование на языке Питон для начинающих
Python — интерпретируемый, объектно-ориентированный (работает с объектами, и каждый элемент информации является объектом) высокоуровневый язык программирования с динамической семантикой.
Питон умеет работать как минимум с двумя видами данных — числами и строками. Числа записываются последовательностью цифр, также перед числом может стоять знак минус, а строки записываются в одинарных кавычках. 2 и ‘2’ — это разные объекты, первый объект — число, а второй —строка. Операция + для целых чисел и для строк работает по-разному: для чисел это сложение, а для строк —конкатенация.
Кроме целых чисел есть и другой класс чисел: действительные (вещественные числа), представляемые в виде десятичных дробей. Они записываются с использованием десятичной точки, например, 2.0. В каком-то смысле, 2 и 2.0 имеют равные значение, но это—разные объекты. Например, можно вычислить значения выражения ‘ABC’ * 10 (повторить строку 10 раз), но нельзя вычислить ‘ABC’ * 10.0.
Как уже говорилось, все данные в Python представлены объектами. Для удобства обращения к объектам используют имена. Имена объектов принято называть переменными
Переменные
Переменные представляют собой имя и ссылку на данные, которые находятся в ячейках памяти компьютера. Раньше, чтобы получить к ним доступ, указывали регистр (точный адрес в двоичном или шестнадцатиричном формате). Но уже давно используются переменные. Переменная состоит из имени и значения. Имя может начинаться только с буквы. Пример:
retro = 57 name = 'Alex'
Учтите, что если значение переменной слово, то оно должно заключаться в кавычки. Если же значение переменной другая переменная или цифра, то кавычки не нужны. Переменные можно вызывать, например:
b=6 print (b)
Будет напечатано 6
Над переменными можно выполнять действия. Пример:
1 2 3
a=4 b=3 c=a+b
Если затем мы вызовем c, то увидим результат сложения a и b. Кстати, действия в Python почти ни чем не отличаются от действий в реальном мире. Попробуйте сами. Нажмите кнопку RUN
a=4 b=6 c=a+b d=a*3 print (c) print (b) print (d)
1 2 3 4 5 6 7
* #Умножение + #Сложение - #Вычитание / #Деление ** #Возведение в степень % #остаток от деления // #целочисленное деление
print (2*5) print (2+5) print (5-2) print (5/2) print (5//2) print (8%3)
Карта встроенных типов (с именами функций для приведения к нужному типу и именами классов для наследования от этих типов):
- специальные типы: None, NotImplemented и Ellipsis ;
- числа;
- целые
- обычное целое int
- целое произвольной точности long
- логический bool
- неизменчивые:
- строка str ;
- Unicode-строка unicode ;
- кортеж tuple ;
- список list ;
- словарь dict
- функции (пользовательские и встроенные);
- функции-генераторы;
- методы (пользовательские и встроенные);
- классы (новые и «классические»);
- экземпляры классов (если имеют метод __call__ );
1 2 3
str('56') '56' #Строки int('7.2') '7' #Целое число float('34') '34.0' #Числа с запятой, дроби;
Узнать тип любого объекта можно с помощью встроенной функции type() Попробуйте сами. Нажмите кнопку RUN
retro = 57 name = ‘Alex’ number = 23.1 print (type(retro)) print (type(name)) print (type(number))
Статья написана на основе материалов:
- http://informatics.mccme.ru/
- https://server.179.ru
Предварительная информация¶
Python – интерпретируемый язык высокого уровня. Это означает, что программа переводится в машинные команды НЕПОСРЕДСТВЕННО в процессе выполнения.
В таблице перечислены особенности языка Python.
Свойство Достоинства Недостатки Интерпретатор ГИБКОСТЬ Одна и та же программа может выполнять разные действия в зависимости от состояния системы (можно попросить пользователя ввести ЛЮБУЮ команду и выполнить ее) МЕДЛЕННОСТЬ выполнения. Для выполнения каждой команды необходимо перевести ее в машинный код Нет описания данных (выделение и освобождение памяти происходит автоматически) Простота кода, использование малого количества символов Возможность ошибки Вложенность команд определяется отступами Хорошая читаемость, короткий код Оперирование объектами Использование ЛЮБОГО элемента в едином стиле Единая концепция для разных платформ Кросплатформенность 1.Установка и настройка¶
Особое удобство языка Python определяется большим количеством свободно распространяемых модулей, которые можно найти в интернете. Все модули имеют ЕДИНЫЙ стиль использования и не требуют компилирования перед установкой. Все это делает Python настолько кроссплатформенным языком, что кусочек программы взятый со страницы в интернете легко запустится у вас на компьютере.
Набор пакетов для полноценной работы:
- Python 2.7 — язык программирования, стандартные модули, документация www.python.org
- NumPy — поддержка массивов, быстрые вычисления с массивами + линейная алгебра http://www.numpy.org/
- SciPy – математический аппарат для ученого (спец функции, случайные величины, БПФ, решение уравнений) http://www.scipy.org/scipylib/index.html
- MatPlotLib – построение графиков, диаграмм 2D (интерактивный режим, сохранение в файл) http://matplotlib.org/
- PIL (Python Image Library) – работа с растровой графикой (чтение, обработка, извлечение информации, запись) http://www.pythonware.com/products/pil/
- EnthoughPyton – комплексное решение + 3-d визуализатор MayaVi, система интерактивного создания программ IPython https://www.enthought.com/products/epd/
- Windows – используются установщики
- Linux – базовая версия входит в систему + дополнения устанавливаются через RPM пакеты
пакеты должны соответствовать вашей конфигурации оборудования (AMD или Intel, 32- 64-bit) и версии языка Python (2.6 или 2.7).
2. Работа с Python¶
Режим Вызов Описание Интерактивный режим python режим в котором интерпретатор выполняет команду после ее ввода с клавиатуры (данные накапливаются в памяти) Режим отладки python –i file выполняются команды из файла, интерпретатор остается после выполнения файла (все данные выполнения файла доступны) Режим выполнения python file выполняются команды из файла, интерпретатор закрывается Кроме указанных выше стандартных режимов можно осуществлять режим пошагового выполнения программы (при подключении соответствующего модуля).
3. Структура языка¶
3.1 Типы данных и объектно-ориентированное построение языка Python¶
Тип определяет область допустимых значений объекта и набор операций над ним. Тип подразумевает пассивное поведение объекта, т.е. действия, которые производятся над ним никак не связаны с определением типа, они описываются отдельно.
Класс — тип + поведение (действия объекта, состоящими в изменении внутреннего состояния и вызовами методов других объектов). Т.е. элемент класса содержит способы изменения своего внутреннего состояния и способы взаимодействия с элементами других классов.
Пример (автоматическое преобразование типов):
>>> x=3. >>> y=1+2j >>> y+x 4+2j
Прежде чем произвести операцию сложения Класс(y) должен преобразовать Объект (x) в свой тип. Если в описании класса не заложена такая возможность, то возникает ошибка. В Python все типы являются классами.
Python это объектно-ориентированный язык программирования, т.е.
- Все данные в нем представляются объектами.
- Каждый объект имеет собственную часть памяти и может состоять из других объектов.
- Каждый объект имеет тип (принадлежит классу)
- Все объекты одного типа могут принимать одни и те же сообщения (и выполнять одни и те же действия).
Для каждого объекта (число, функция, список, и т.д.) задан набор свойств (данных, хранящихся в объекте) и методов (способов использования объекта). Простые объекты (числа) могут рассматриваться традиционным образом, хотя на самом деле, операции над ними «+, -, *, /» и преобразование типов включены в описание их класса.
Типы данных Функция преобразования Пример присваивания Примечания Целый (integer) int() a = 134 Большой целый(long) long() a = 1L Вещественный (float) float() a = 1. a = 3.1415 Комплексный(complex) complex() a = 1+2j Логический (boolean) bool() a = True a = False Строка (string) str() a=’12414dfgas’ a=”123dfasdf” a=”””rqw 1211dsfasf daffa””” поддержка многострочных выражений (тройные кавычки) Список (list) list() a = [12,’sd’,1,b] (b-имя переменной) индексация (считывание, запись), добавление, исключение, упорядоченность, сортировка, поиск и перебор Кортеж (tuple) tuple() a = (12,’sd’,1,b) (b-имя переменной) индексация (считывание, запись), упорядоченность, поиск и перебор Словарь (dictionary) dict() a= (b-имя переменной) индексация (считывание, запись), добавление, исключение Множество (set) set() a = set(1,4,’34’,b) (b-имя переменной) добавление, исключение, поиск и перебор 3.2 Операции над данными¶
Все перечисленные ниже операции реализуются для каждого типа данных внутри соответствующего класса. Можно доопределить операции, которые не определены в стандартном Python (например умножение строк). Способ использования переменных определенного типа (объектов класса) заложен в описании класса, например список, кортеж и строка поддерживают операцию взятия среза (выбора элементов). Многие типы (список, кортеж, строка, итератор) поддерживают перебор элементов и, следовательно, могут использоваться в операторе «for» или функциях «sum», «max». Есть объекты (функции), поддерживающие вызов, т.е. их можно вызывать, например «min(*arg)». Можно доопределить операцию вызова для разных типов данных, например строк и использовать строки, для вызова функций по названию.
Доопределяем класс строки – строка поддерживает операцию вызова.
string.__call__(self,*arg): try: apply(self.st,*arg) except: print ‘No function ’+self.st
Используем строку, как функцию
- целые