Первый коммит

This commit is contained in:
Sergey Lemeshevsky
2020-02-19 13:25:09 +03:00
commit d53224ecea
35 changed files with 2111 additions and 0 deletions

892
arithmetic.ipynb Normal file
View File

@@ -0,0 +1,892 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- dom:TITLE: Арифметические операции -->\n",
"# Арифметические операции\n",
"<!-- dom:AUTHOR: С.В. Лемешевский Email:sergey.lemeshevsky@gmail.com at Институт математики НАН Беларуси -->\n",
"<!-- Author: --> \n",
"**С.В. Лемешевский** (email: `sergey.lemeshevsky@gmail.com`), Институт математики НАН Беларуси\n",
"\n",
"Date: **Feb 19, 2020**\n",
"\n",
"Язык Python , благодаря наличию огромного количества библиотек для решения\n",
"разного рода вычислительных задач, является конкурентом таким пакетам как Matlab и\n",
"Octave. Запущенный в интерактивном режиме, он, фактически, превращается в\n",
"мощный калькулятор. В этой главе речь пойдет об арифметических операциях,\n",
"доступных в данном языке.\n",
"\n",
"Как было сказано в предыдущей главе, посвященной типам и модели данных\n",
"Python, в этом языке существует три встроенных числовых типа данных:\n",
"* целые числа (`int`);\n",
"\n",
"* вещественные числа (`float`);\n",
"\n",
"* комплексные числа (`complex`).\n",
"\n",
"Если в качестве операндов некоторого арифметического выражения используются\n",
"только целые числа, то результат тоже будет целое число. Исключением является\n",
"операция деления, результатом которой является вещественное число.\n",
"При совместном использовании целочисленных и вещественных переменных, результат\n",
"будет вещественным.\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"<!-- Common Mako variable and functions -->\n",
"<!-- -*- coding: utf-8 -*- -->\n",
"\n",
"\n",
"\n",
"\n",
"# Арифметические операции с целыми и вещественными числами\n",
"<div id=\"arithmetic:numbers\"></div>\n",
"\n",
"Все эксперименты будем проводить в Python, запущенном в интерактивном\n",
"режиме.\n",
"\n",
"\n",
"**Сложение.** Складывать можно непосредственно сами числа ..."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"3 + 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"либо переменные, но они должны предварительно быть проинициализированы."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 3\n",
"b = 2\n",
"a + b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Результат операции сложения можно присвоить другой переменной..."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 3\n",
"b = 2\n",
"c = a + b\n",
"print (c)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"либо ей же самой, в таком случае можно использовать полную или сокращенную\n",
"запись, полная выглядит так:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 3\n",
"b = 2\n",
"a = a + b\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"сокращенная так:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 3\n",
"b = 2\n",
"a += b\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Все перечисленные выше варианты использования операции сложения могут быть\n",
"применены для всех нижеследующих операций.\n",
"\n",
"**Вычитание.**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"4 - 2"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 5\n",
"b = 7\n",
"a - b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Деление.**"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"9 / 3"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 7\n",
"b = 4\n",
"a / b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Получение целой части от деления.**"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"9 // 3"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 7\n",
"b = 4\n",
"a // b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Получение дробной части от деления.**"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"9 % 5"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 7\n",
"b = 4\n",
"a % b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Возведение в степень.**"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"5**4"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 4\n",
"b = 3\n",
"a ** b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"arithmetic\" -->\n",
"<!-- doconce-section-nickname: \"numbers\" -->\n",
"<!-- End: -->\n",
"# Работа с комплексными числами\n",
"<div id=\"arithmetic:complex\"></div>\n",
"\n",
"Для создания комплексного числа можно использовать функцию `complex(a, b)`, в\n",
"которую, в качестве первого аргумента, передается действительная часть, в качестве\n",
"второго мнимая. Либо записать число в виде `a + bj`.\n",
"\n",
"Рассмотрим несколько примеров.\n",
"\n",
"Создание комплексного числа."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"z = 1 + 2j\n",
"print(z)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = complex ( 3 , 2 )\n",
"print (x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Комплексные числа можно складывать, вычитать, умножать, делить и возводить в\n",
"степень."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x + z"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x - z"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x * z"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x / z"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x ** z"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x ** 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"У комплексного числа можно извлечь действительную и мнимую части."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = 3 + 2j\n",
"x.real"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x.imag"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Для получения комплексносопряженного число необходимо использовать метод\n",
"`conjugate()`."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x.conjugate()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"arithmetic\" -->\n",
"<!-- doconce-section-nickname: \"complex\" -->\n",
"<!-- End: -->\n",
"# Битовые операции\n",
"<div id=\"arithmetic:bit\"></div>\n",
"\n",
"В Python доступны битовые операции, их можно производить над целыми числами.\n",
"\n",
"**Побитовое И (AND).**"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> p = 9\n",
">>> q = 3\n",
">>> p & q\n",
"1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Побитовое ИЛИ (OR).**"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> p | q\n",
"11"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Побитовое Исключающее ИЛИ (XOR).**"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> p ^ q\n",
"10\n",
"Инверсия.\n",
">>> ~ p\n",
"- 10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Сдвиг вправо и влево.**"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> p << 1\n",
"18\n",
">>> p >> 1\n",
"4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"arithmetic\" -->\n",
"<!-- doconce-section-nickname: \"bit\" -->\n",
"<!-- End: -->\n",
"# Представление чисел в других системах счисления\n",
"<div id=\"arithmetic:other\"></div>\n",
"\n",
"В своей повседневной жизни мы используем десятичную систему исчисления, но\n",
"при программирования, очень часто, приходится работать с шестнадцатеричной,\n",
"двоичной и восьмеричной.\n",
"\n",
"**Представление числа в шестнадцатеричной системе.**"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> m = 124504\n",
">>> hex(m)\n",
"'0x1e658'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Представление числа в восьмеричной системе.**"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> oct(m)\n",
"'0o363130'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Представление числа в двоичной системе.**"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> bin(m)\n",
"'0b11110011001011000'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"arithmetic\" -->\n",
"<!-- doconce-section-nickname: \"other\" -->\n",
"<!-- End: -->\n",
"# Библиотека (модуль) `math`\n",
"<div id=\"arithmetic:math\"></div>\n",
"\n",
"В стандартную поставку Python входит библиотека math , в которой содержится\n",
"большое количество часто используемых математических функций.\n",
"\n",
"Для работы с данным модулем его предварительно нужно импортировать."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import math"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Рассмотрим наиболее часто используемые функции.\n",
"\n",
"**Функция `math.ceil(x)`.**\n",
"\n",
"Возвращает ближайшее целое число большее, чем `x`."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.ceil( 3.2 )\n",
"4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Функция `math.fabs(x)`.**\n",
"\n",
"Возвращает абсолютное значение числа."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.fabs(-7)\n",
"7.0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Функция `math.factorial(x)`.**\n",
"\n",
"Вычисляет факториал `x`."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.factorial( 5 )\n",
"120"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"** Функция `math.floor(x)`.**\n",
"\n",
"Возвращает ближайшее целое число меньшее, чем `x`."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.floor( 3.2 )\n",
"3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Функция `math.exp(x)`.**\n",
"Вычисляет `e**x`."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.exp( 3 )\n",
"20.08553692318766"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Функция `math.log2(x)`.**\n",
"Логарифм по основанию `2`.\n",
"\n",
"**Функция `math.log10(x)`.**\n",
"\n",
"Логарифм по основанию 10.\n",
"\n",
"**Функция `math.log(x[, base])`.**\n",
"\n",
"По умолчанию вычисляет логарифм по основанию `e`, дополнительно можно указать\n",
"основание логарифма."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.log2( 8 )\n",
"3.0\n",
">>> math.log10( 1000 )\n",
"3.0\n",
">>> math.log( 5 )\n",
"1.609437912434100\n",
">>> math.log( 4 , 8 )\n",
"0.666666666666666"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Функция `math.pow(x, y)`.**\n",
"\n",
"Вычисляет значение `x` в степени `y`."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.pow( 3 , 4 )\n",
"81.0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Функция `math.sqrt(x)`.**\n",
"\n",
"Корень квадратный от `x`."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> math.sqrt( 25 )\n",
"5.0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Тригонометрические функции, их мы оставим без примера.**\n",
"\n",
"* `math.cos(x)`\n",
"\n",
"* `math.sin(x)`\n",
"\n",
"* `math.tan(x)`\n",
"\n",
"* `math.acos(x)`\n",
"\n",
"* `math.asin(x)`\n",
"\n",
"* `math.atan(x)`\n",
"\n",
"И напоследок пару констант.\n",
"* `math.pi` — число $\\pi$.\n",
"\n",
"* `math.e` — число $e$.\n",
"\n",
"Помимо перечисленных, модуль `math` содержит ещё много различных\n",
"функций, за более подробной информацией можете обратиться eна\n",
"официальный сайт (<https://docs.python.org/3/library/math.html>).\n",
"\n",
"\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"arithmetic\" -->\n",
"<!-- doconce-section-nickname: \"math\" -->\n",
"<!-- End: -->\n",
"\n",
"\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"arithmetic\" -->\n",
"<!-- End: -->"
]
}
],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}

495
datatype.ipynb Normal file
View File

@@ -0,0 +1,495 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- dom:TITLE: Типы и модель данных -->\n",
"# Типы и модель данных\n",
"<!-- dom:AUTHOR: С.В. Лемешевский Email:sergey.lemeshevsky@gmail.com at Институт математики НАН Беларуси -->\n",
"<!-- Author: --> \n",
"**С.В. Лемешевский** (email: `sergey.lemeshevsky@gmail.com`), Институт математики НАН Беларуси\n",
"\n",
"Date: **Feb 19, 2020**\n",
"\n",
"<!-- Common Mako variable and functions -->\n",
"<!-- -*- coding: utf-8 -*- -->\n",
"\n",
"\n",
"\n",
"\n",
"Здесь разберем как Python работает с переменными и определим, какие\n",
"типы данных можно использовать в рамках этого языка. Подробно рассмотрим модель\n",
"данных Python, а также механизмы создания и изменения значения\n",
"переменных.\n",
"\n",
"# Кратко о типизации языков программирования\n",
"<div id=\"datatype:typization\"></div>\n",
"\n",
"Если достаточно формально подходить к вопросу о типизации языка Python, то\n",
"можно сказать, что он относится к языкам с неявной сильной динамической\n",
"типизацией.\n",
"\n",
"Неявная типизация означает, что при объявлении переменной вам не нужно\n",
"указывать её тип, при явной это делать необходимо. В качестве примера языков с\n",
"явной типизацией можно привести Java, C++ . Вот как будет выглядеть объявление\n",
"целочисленной переменной в Java и Python.\n",
"\n",
"* Java:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" int a = 1 ;\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Python:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"chapter\" -->\n",
"<!-- doconce-section-nickname: \"typization\" -->\n",
"<!-- End: -->\n",
"# Типы данных в Python\n",
"<div id=\"datatype:types\"></div>\n",
"\n",
"В Python типы данных можно разделить на встроенные в интерпретатор (`built-in`) и\n",
"не встроенные, которые можно использовать при импортировании соответствующих\n",
"модулей.\n",
"\n",
"К основным встроенным типам относятся:\n",
"1. `None` (неопределенное значение переменной)\n",
"\n",
"2. Логические переменные (`Boolean Type`)\n",
"\n",
"3. Числа (`Numeric Type`)\n",
"\n",
"a. `int` целое число\n",
"\n",
"b. `float` число с плавающей точкой\n",
"\n",
"c. `complex` комплексное число\n",
"\n",
"\n",
"4. Списки (`Sequence Type`)\n",
"\n",
"a. `list` список\n",
"\n",
"b. `tuple` кортеж\n",
"\n",
"c. `range` диапазон\n",
"\n",
"\n",
"4. Строки (`Text Sequence Type`)\n",
"\n",
"a. `str`\n",
"\n",
"\n",
"2. Бинарные списки ( Binary Sequence Types )\n",
"\n",
"a. `bytes` байты\n",
"\n",
"b. `bytearray` массивы байт\n",
"\n",
"c. `memoryview` специальные объекты для доступа к внутренним данным объекта через `protocol buffer`\n",
"\n",
"\n",
"4. Множества (`Set Types`)\n",
"\n",
"a. `set` множество\n",
"\n",
"b. `frozenset` неизменяемое множество\n",
"\n",
"\n",
"3. Словари (`Mapping Types`)\n",
"\n",
"a. `dict` словарь\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"datatype\" -->\n",
"<!-- doconce-section-nickname: \"types\" -->\n",
"<!-- End: -->\n",
"\n",
"\n",
"# Модель данных\n",
"<div id=\"datatype:model\"></div>\n",
"\n",
"Рассмотрим как создаются объекты в памяти, их устройство, процесс объявления\n",
"новых переменных и работу операции присваивания.\n",
"\n",
"Для того, чтобы объявить и сразу инициализировать переменную необходимо\n",
"написать её имя, потом поставить знак равенства и значение, с которым эта\n",
"переменная будет создана.\n",
"\n",
"Например строка:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"b = 5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Объявляет переменную `b` и присваивает ей значение `5`.\n",
"\n",
"Целочисленное значение `5` в рамках языка Python по сути своей является\n",
"*объектом*. Объект, в данном случае это абстракция для представления данных,\n",
"данные это числа, списки, строки и т.п. При этом, под *данными* следует понимать как\n",
"непосредственно сами объекты, так и отношения между ними (об этом чуть позже).\n",
"Каждый объект имеет три атрибута это *идентификатор*, *значение* и *тип*.\n",
"\n",
"*Идентификатор* это уникальный признак объекта, позволяющий отличать объекты\n",
"друг от друга, а *значение* непосредственно информация, хранящаяся в памяти,\n",
"которой управляет интерпретатор.\n",
"\n",
"При инициализации переменной, на уровне интерпретатора, происходит\n",
"следующее:\n",
"* создается целочисленный объект `5` (можно представить, что в этот момент создается ячейка и число `5` «кладется» в эту ячейку);\n",
"\n",
"* данный объект имеет некоторый идентификатор, значение: `5`, и тип: целое число;\n",
"\n",
"* посредством оператора `=` создается ссылка между переменной `b` и целочисленным объектом `5` (переменная `b` ссылается на объект `5`).\n",
"\n",
"> **Замечание.**\n",
">\n",
"> Имя переменной не должно совпадать с ключевыми словами интерпретатора\n",
"> Python . Список ключевых слов можно получить непосредственно в программе, для\n",
"> этого нужно подключить модуль `keyword` и воспользоваться командой\n",
"> `keyword.kwlist`."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import keyword\n",
"print(\"Python keywords: \" , keyword.kwlist)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Проверить является или нет идентификатор ключевым словом можно так:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4\n",
" \n",
"<\n",
"<\n",
"<\n",
"!\n",
"!\n",
"C\n",
"O\n",
"D\n",
"E\n",
"_\n",
"B\n",
"L\n",
"O\n",
"C\n",
"K\n",
" \n",
" \n",
"p\n",
"y\n",
"c\n",
"o\n",
"d"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"5\n",
" \n",
"<\n",
"<\n",
"<\n",
"!\n",
"!\n",
"C\n",
"O\n",
"D\n",
"E\n",
"_\n",
"B\n",
"L\n",
"O\n",
"C\n",
"K\n",
" \n",
" \n",
"p\n",
"y\n",
"c\n",
"o\n",
"d"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6\n",
" \n",
"<\n",
"<\n",
"<\n",
"!\n",
"!\n",
"C\n",
"O\n",
"D\n",
"E\n",
"_\n",
"B\n",
"L\n",
"O\n",
"C\n",
"K\n",
" \n",
" \n",
"p\n",
"y\n",
"c\n",
"o\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Для того, чтобы посмотреть на объект с каким идентификатором ссылается данная\n",
"переменная, можно использовать функцию `id()`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> a = 4\n",
">>> b = 5\n",
">>> id (a)\n",
"1829984576\n",
">>> id (b)\n",
"1829984592\n",
">>> a = b\n",
">>> id (a)\n",
"1829984592"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Как видно из примера, идентификатор это некоторое целочисленное значение,\n",
"посредством которого уникально адресуется объект. Изначально переменная a\n",
"ссылается на объект `4` с идентификатором `1829984576`, переменная `b`\n",
" на объект с `id = 1829984592`. После выполнения операции\n",
"присваивания `a = b`, переменная a стала ссылаться на тот же объект,\n",
"что и `b`.\n",
"\n",
"<!-- dom:FIGURE: [fig-datatype/refs.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-datatype/refs.png)<!-- end figure -->\n",
"\n",
"\n",
"Тип переменной можно определить с помощью функции `type()`. Пример\n",
"использования приведен ниже."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> a = 10\n",
">>> b = \"hello\"\n",
">>> c = ( 1 , 2 )\n",
">>> type (a)\n",
"< class 'int' >\n",
">>> type (b)\n",
"< class 'str' >\n",
">>> type (c)\n",
"< class 'tuple' >"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"datatype\" -->\n",
"<!-- doconce-section-nickname: \"model\" -->\n",
"<!-- End: -->\n",
"# Изменяемые и неизменяемые типы данных\n",
"<div id=\"datatype:mutable\"></div>\n",
"\n",
"В Python существуют изменяемые и неизменяемые типы.\n",
"\n",
"К неизменяемым (`immutable`) типам относятся:\n",
"* целые числа (`int`);\n",
"\n",
"* числа с плавающей точкой (`float`);\n",
"\n",
"* комплексные числа (`complex`);\n",
"\n",
"* логические переменные (`bool`);\n",
"\n",
"* кортежи (`tuple`);\n",
"\n",
"* строки (`str`);\n",
"\n",
"* неизменяемые множества (`frozen set`).\n",
"\n",
"К изменяемым ( mutable ) типам относятся\n",
"* списки (`list`);\n",
"\n",
"* множества (`set`);\n",
"\n",
"* словари (`dict`).\n",
"\n",
"Как уже было сказано ранее, при создании переменной, вначале создается объект,\n",
"который имеет уникальный идентификатор, тип и значение, после этого переменная\n",
"может ссылаться на созданный объект.\n",
"\n",
"Неизменяемость типа данных означает, что созданный объект больше не\n",
"изменяется. Например, если мы объявим переменную `k = 15`, то будет создан объект\n",
"со значением `15`, типа `int` и идентификатором, который можно узнать с помощью\n",
"функции `id()`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> k = 15\n",
">>> id (k)\n",
"1672501744\n",
">>> type (k)\n",
"< class 'int' >"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Объект с `id = 1672501744` будет иметь значение `15` и изменить его уже нельзя.\n",
"Если тип данных изменяемый, то можно менять значение объекта.\n",
"\n",
"Например, создадим список `[1, 2]`, а потом заменим второй элемент на\n",
"`3`."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
">>> a = [ 1 , 2 ]\n",
">>> id (a)\n",
"47997336\n",
">>> a[ 1 ] = 3\n",
">>> a\n",
"[ 1 , 3 ]\n",
">>> id (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Как видно, объект на который ссылается переменная `a`, был изменен. Это можно\n",
"проиллюстрировать следующим рисунком.\n",
"\n",
"<!-- dom:FIGURE: [fig-datatype/mute.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-datatype/mute.png)<!-- end figure -->\n",
"\n",
"\n",
"В рассмотренном случае, в качестве данных списка, выступают не объекты, а\n",
"отношения между объектами. Т.е. в переменной a хранятся ссылки на объекты\n",
"содержащие числа `1` и `3`, а не непосредственно сами эти числа.\n",
"\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"datatype\" -->\n",
"<!-- doconce-section-nickname: \"mutable\" -->\n",
"<!-- End: -->\n",
"\n",
"\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"datatype\" -->\n",
"<!-- End: -->"
]
}
],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}

BIN
fig-datatype/mute.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
fig-datatype/refs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

BIN
fig-intro/check_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
fig-intro/check_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
fig-intro/check_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
fig-intro/check_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

BIN
fig-intro/check_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
fig-intro/check_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
fig-intro/interact_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
fig-intro/interact_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
fig-intro/interact_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
fig-intro/interact_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
fig-intro/interact_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
fig-intro/pack_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
fig-intro/python_inst_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

BIN
fig-intro/python_inst_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

BIN
fig-intro/python_inst_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

BIN
fig-intro/python_inst_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

722
intro.ipynb Normal file
View File

@@ -0,0 +1,722 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- dom:TITLE: Введение -->\n",
"# Введение\n",
"<!-- dom:AUTHOR: С.В. Лемешевский Email:sergey.lemeshevsky@gmail.com at Институт математики НАН Беларуси -->\n",
"<!-- Author: --> \n",
"**С.В. Лемешевский** (email: `sergey.lemeshevsky@gmail.com`), Институт математики НАН Беларуси\n",
"\n",
"Date: **Feb 19, 2020**\n",
"\n",
"<!-- Common Mako variable and functions -->\n",
"<!-- -*- coding: utf-8 -*- -->\n",
"\n",
"\n",
"\n",
"\n",
"# Установка\n",
"<div id=\"intro:install\"></div>\n",
"\n",
"## Версии Python\n",
"<div id=\"intro:install:vers\"></div>\n",
"\n",
"На сегодняшний день существуют две версии Python — это Python 2\n",
"и Python 3, у них отсутствует полная совместимость друг с другом. На\n",
"данный момент вторая версия Python ещё широко используется,\n",
"но, судя по изменениям, которые происходят, со временем, она останется\n",
"только для запуска старого кода. Мы будем Python 3, и, в дальнейшем,\n",
"если где-то будет встречаться слово Python, то под ним следует\n",
"понимать Python 3. Случаи применения Python 2 будут специально\n",
"оговариваться.\n",
"\n",
"## Установка Python\n",
"<div id=\"intro:install:python\"></div>\n",
"\n",
"Для установки интерпретатора Python на ваш компьютер, первое, что\n",
"нужно сделать — это скачать дистрибутив. Загрузить его можно с\n",
"официального сайта, перейдя по ссылке <https://www.python.org/downloads/>\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/python_downloads.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/python_downloads.png)<!-- end figure -->\n",
"\n",
"\n",
"\n",
"### Установка Python в Windows\n",
"\n",
"<div id=\"intro:install:python:windows\"></div>\n",
"\n",
"Для операционной системы Windows дистрибутив распространяется либо в виде\n",
"исполняемого файл, либо в виде архивного файла.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/python_dwl_list_files.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/python_dwl_list_files.png)<!-- end figure -->\n",
"\n",
"\n",
"**Порядок установки.**\n",
"\n",
"1. Запустите скачанный установочный файл.\n",
"\n",
"2. Выберете способ установки.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/python_inst_1.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/python_inst_1.png)<!-- end figure -->\n",
"\n",
"\n",
"В данном окне предлагается два варианта *Install Now* и *Customize installation*. При\n",
"выборе *Install Now*, Python установится в папку по указанному пути. Помимо самого\n",
"интерпретатора будет установлен `IDLE` (интегрированная среда разработки), `pip`\n",
"(пакетный менеджер) и документация, а также будут созданы соответствующие ярлыки\n",
"и установлены связи файлов, имеющие расширение `.py` с интерпретатором Python.\n",
"*Customize installation* это вариант настраиваемой установки. Опция *Add python 3.* to\n",
"`PATH` нужна для того, чтобы появилась возможность запускать интерпретатор без\n",
"указания полного пути до исполняемого файла при работе в командной строке.\n",
"\n",
"1. Отметьте необходимые опций установки (доступно при выборе *Customize installation*)\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/python_inst_2.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/python_inst_2.png)<!-- end figure -->\n",
"\n",
"\n",
"На этом шаге нам предлагается отметить дополнения, устанавливаемые вместе с\n",
"интерпретатором Python . Рекомендуем выбрать все опции:\n",
"\n",
"* `Documentation` установка документаций.\n",
"\n",
"* `pip` установка пакетного менеджера pip.\n",
"\n",
"* `tcl/tk` and `IDLE` установка интегрированной среды разработки (`IDLE`) и библиотеки для построения графического интерфейса (`tkinter`).\n",
"\n",
"2. Выберете место установки (доступно при выборе Customize installation )\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/python_inst_3.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/python_inst_3.png)<!-- end figure -->\n",
"\n",
"\n",
"Помимо указания пути, данное окно позволяет внести дополнительные\n",
"изменения в процесс установки с помощью опций:\n",
"\n",
"* `Install for all users` Установить для всех пользователей. Если не выбрать данную опцию, то будет предложен вариант инсталляции в папку пользователя, устанавливающего интерпретатор.\n",
"\n",
"* `Associate files with Python` Связать файлы, имеющие расширение `.py`, с Python. При выборе данной опции будут внесены изменения в Windows , позволяющие запускать Python скрипты по двойному щелчку мыши.\n",
"\n",
"* `Create shortcuts for installed applications` Создать ярлыки для запуска приложений.\n",
"\n",
"* `Add Python to environment variables` Добавить пути до интерпретатора Python в переменную `PATH`.\n",
"\n",
"* `Precomple standard library` Провести прекомпиляцию стандартной библиотеки.\n",
"\n",
"Последние два пункта (`Download debugging symbols`, `Download debug\n",
"binaries`) связаны с загрузкой компонентов для отладки, их мы устанавливать не будем.\n",
"\n",
"\n",
"1. После успешной установки вас ждет следующее сообщение.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/python_inst_4.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/python_inst_4.png)<!-- end figure -->\n",
"\n",
"\n",
"### Установка Python в Linux\n",
"\n",
"<div id=\"intro:install:python:linux\"></div>\n",
"\n",
"Чаще всего интерпретатор Python уже в входит в состав дистрибутива. Это можно\n",
"проверить набрав в терминале"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> python\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"или"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> python3\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В первом случае, вы запустите Python 2 во втором Python 3. В будущем, скорее\n",
"всего, во всех дистрибутивах Linux, включающих Python, будет входить только третья\n",
"версия. Если у вас, при попытке запустить Python, выдается сообщение о том, что он\n",
"не установлен, или установлен, но не тот, что вы хотите, то у вас есть два пути: а)\n",
"собрать Python из исходников; б) взять из репозитория.\n",
"\n",
"Например, для установки из репозитория в Ubuntu воспользуйтесь командой:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> sudo apt-get install python3\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Установка Anaconda\n",
"<div id=\"intro:install:anaconda\"></div>\n",
"\n",
"Для удобства запуска примеров и изучения языка Python , советуем установить на\n",
"свой ПК пакет Anaconda . Этот пакет включает в себя интерпретатор языка Python (есть\n",
"версии 2 и 3), набор наиболее часто используемых библиотек и удобную среду\n",
"разработки и исполнения, запускаемую в браузере.\n",
"\n",
"Для установки этого пакета, предварительно нужно скачать дистрибутив\n",
"<https://www.continuum.io/downloads>.\n",
"\n",
"Есть варианты под Windows , Linux и Mac OS .\n",
"\n",
"### Установка Anaconda в Windows\n",
"\n",
"<div id=\"intro:install:anaconda:windows\"></div>\n",
"\n",
"1. Запустите скачанный инсталлятор. В первом появившемся окне необходимо\n",
"нажать «Next».\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_1.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_1.png)<!-- end figure -->\n",
"\n",
"\n",
"2. Далее следует принять лицензионное соглашение.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_2.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_2.png)<!-- end figure -->\n",
"\n",
"\n",
"\n",
"3. Выберете одну из опций установки:\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_3.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_3.png)<!-- end figure -->\n",
"\n",
"\n",
"* `Just Me` только для пользователя, запустившего установку;\n",
"\n",
"* `All Users для всех пользователей.`\n",
"\n",
"4. Укажите путь, по которому будет установлена Anaconda.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_4.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_4.png)<!-- end figure -->\n",
"\n",
"\n",
"5. Укажите дополнительные опции:\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_5.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_5.png)<!-- end figure -->\n",
"\n",
"\n",
"* `Add Anaconda to the system PATH environment variable` добавить Anaconda в системную переменную `PATH`;\n",
"\n",
"* `Register Anaconda as the system Python 3` использовать Anaconda, как интерпретатор Python 3 по умолчанию.\n",
"\n",
"Для начала установки нажмите на кнопку «Install».\n",
"\n",
"5. После этого будет произведена установка Anaconda на ваш компьютер.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_6.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_6.png)<!-- end figure -->\n",
"\n",
"\n",
"### Установка Anaconda в Linux\n",
"\n",
"<div id=\"intro:install:anaconda:linux\"></div>\n",
"\n",
"Скачайте дистрибутив Anaconda для Linux, он будет иметь расширение\n",
"`.sh` , и запустите установку командой:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> bash имя_дистрибутива.sh\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В результате вы увидите приглашение к установке. Для продолжения\n",
"процессе нажмите «Enter».\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_7.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_7.png)<!-- end figure -->\n",
"\n",
"\n",
"2. Прочитайте лицензионное соглашение, его нужно пролистать до конца.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_8.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_8.png)<!-- end figure -->\n",
"\n",
"\n",
"Согласитесь с ним, для этого требуется набрать в командной строке `yes`, в ответе\n",
"на вопрос инсталлятора:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> Do you approve the license terms? [yes|no]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_9.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_9.png)<!-- end figure -->\n",
"\n",
"\n",
"3. Выберете место установки. Можно выбрать один из следующих вариантов:\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_10.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_10.png)<!-- end figure -->\n",
"\n",
"\n",
"* `Press ENTER to confirm the location` нажмите ENTER для принятия предложенного пути установки. Путь по умолчанию для моей машины: /home/tester/anaconda3 , он представлен чуть выше данного меню.\n",
"\n",
"* `Press CTRL-C to abort the installation` нажмите CTRL-C для отмены установки.\n",
"\n",
"* `Or specify a different location below` или укажите другой путь в строке ниже.\n",
"\n",
"Нажмите «ENTER».\n",
"\n",
"4. После этого начнется установка.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/anaconda_inst_11.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/anaconda_inst_11.png)<!-- end figure -->\n",
"\n",
"\n",
"## Проверка работоспособности\n",
"<div id=\"intro:install:check\"></div>\n",
"\n",
"Теперь проверим работоспособность всего того, что мы установили.\n",
"\n",
"### Проверка интерпретатора Python\n",
"\n",
"<div id=\"intro:install:check:python\"></div>\n",
"\n",
"Для начала протестируем интерпретатор в командном режиме. Если вы работаете\n",
"в Windows , то нажмите сочетание Win+R и в появившемся окне введите\n",
"`python`. В Linux откройте окно терминала и в нем введите `python3`\n",
"(или `python`).\n",
"\n",
"В результате Python запустится в командном режиме, выглядеть это будет\n",
"примерно так (картинка приведена для Windows, в Linux результат будет\n",
"аналогичным):\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/check_1.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/check_1.png)<!-- end figure -->\n",
"\n",
"\n",
"В окне введите:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"print(\"Hello, World!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Результат должен быть следующий:\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/check_2.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/check_2.png)<!-- end figure -->\n",
"\n",
"\n",
"### Проверка Anaconda\n",
"\n",
"<div id=\"intro:install:check:anaconda\"></div>\n",
"\n",
"Здесь и далее будем считать, что пакет Anaconda установлен в Windows, в папку\n",
"`C:\\Anaconda3`, в Linux, вы его можете найти в каталоге, который\n",
"выбрали при установке.\n",
"\n",
"Перейдите в папку `Scripts` и введите в командной строке:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> ipython notebook\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- dom:FIGURE: [fig-intro/check_3.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/check_3.png)<!-- end figure -->\n",
"\n",
"\n",
"Если вы находитесь в Windows и открыли папку `C:\\Anaconda3\\Scripts` через\n",
"проводник, то для запуска интерпретатора командной строки для этой папки в поле\n",
"адреса введите `cmd`.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/check_4.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/check_4.png)<!-- end figure -->\n",
"\n",
"\n",
"\n",
"В результате запустится веб-сервер и среда разработки в браузере.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/check_5.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/check_5.png)<!-- end figure -->\n",
"\n",
"\n",
"Создайте ноутбук для разработки, для этого нажмите на кнопку «New» (в правом углу\n",
"окна) и в появившемся списке выберете Python.\n",
"\n",
"В результате будет создана новая страница в браузере с ноутбуком. Введите в\n",
"первой ячейке команду"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"print(\"Hello, World!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"и нажмите Alt+Enter на клавиатуре. Ниже ячейки должна появиться соответствующая надпись.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/check_6.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/check_6.png)<!-- end figure -->\n",
"\n",
"\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"intro\" -->\n",
"<!-- doconce-section-nickname: \"install\" -->\n",
"<!-- End: -->\n",
"\n",
"Doconce finished at Tue Feb 18 17:47:38\n",
"# Запуск программ на Python\n",
"<div id=\"intro:run\"></div>\n",
"\n",
"Программный код на языке Python можно записать с помощью любого\n",
"простого текстового редактора, который способен загружать и сохранять\n",
"текст либо в кодировке ASCII, либо UTF-8. По умолчанию предполагается,\n",
"что файлы с программным кодом на языке Python сохраняются в кодировке\n",
"UTF-8, надмножестве кодировки ASCII, с помощью которой можно\n",
"представить практически любой символ любого национального\n",
"алфавита. Файлы с программным кодом на языке Python обычно имеют\n",
"расширение `.py`, хотя в некоторых UNIX-подобных системах (таких как\n",
"Linux и Mac OS X) некоторые приложения на языке Python не имеют\n",
"расширения, а программы на языке Python с графическим интерфейсом, в\n",
"частности в Windows и Mac OS X, обычно имеют расширение `.pyw`. В этой\n",
"книге все время будет использоваться расширение `.py` для обозначения\n",
"консольных программ и модулей Python и расширение `.pyw` для\n",
"программ с графическим интерфейсом. Все примеры, представленные в\n",
"книге, не требуют изменений для запуска в любой из платформ,\n",
"поддерживаемых Python 3.\n",
"\n",
"\n",
"Язык Python это *интерпретируемый* язык. Это означает, что помимо\n",
"непосредственно самой программы, вам необходим специальный инструмент для её\n",
"запуска. Напомним, что существуют компилируемые и интерпретируемые языки\n",
"программирования. В первом случае, программа с языка высокого уровня переводится\n",
"в машинный код для конкретной платформы. В дальнейшем, среди пользователей,\n",
"она, как правило, распространяется в виде бинарного файла. Для запуска такой\n",
"программы не нужны дополнительные программные средства (за исключением\n",
"необходимых библиотек, но эти тонкости выходят за рамки нашего обсуждения).\n",
"Самыми распространенными языками такого типа являются C++ и C . Программы на\n",
"интерпретируемых языках, выполняются интерпретатором и распространяются в виде\n",
"исходного кода.\n",
"\n",
"Python может работать в двух режимах:\n",
"* интерактивный;\n",
"\n",
"* пакетный.\n",
"\n",
"## Интерактивный режим работы\n",
"<div id=\"intro:run:interact\"></div>\n",
"\n",
"В интерактивный режим можно войти, набрав в командной строке"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> python\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"или"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> python3\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В результате Python запустится в интерактивном режиме и будет ожидать ввод\n",
"команд пользователя.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/interact_1.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/interact_1.png)<!-- end figure -->\n",
"\n",
"\n",
"Если же у вас есть файл с исходным кодом на Python , и вы его хотите запустить, то\n",
"для этого нужно в командной строке вызвать интерпретатор Python и в качестве\n",
"аргумента передать ваш файл. Например, для файла с именем test.py процедура\n",
"запуска будет выглядеть так:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> python test.py\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Откройте Python в интерактивном режиме и наберите в нем следующее:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"print(“Hello, World!”)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"И нажмите ENTER .\n",
"\n",
"В ответ на это интерпретатор выполнит данную строку и отобразит\n",
"строкой ниже результат своей работы.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/interact_2.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/interact_2.png)<!-- end figure -->\n",
"\n",
"\n",
"Python можно использовать как калькулятор для различных вычислений, а если\n",
"дополнительно подключить необходимые математические библиотеки, то по своим\n",
"возможностям он становится практически равным таким пакетам как Matlab, Octave и\n",
"т.п.\n",
"\n",
"Различные примеры вычислений приведены ниже. Более подробно об\n",
"арифметических операциях будет рассказано далее. \n",
"\n",
"<!-- dom:FIGURE: [fig-intro/interact_3.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/interact_3.png)<!-- end figure -->\n",
"\n",
"\n",
"Для выхода из интерактивного режима, наберите команду"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"exit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"и нажмите ENTER .\n",
"\n",
"В комплекте вместе с интерпретатором Python идет IDLE (интегрированная\n",
"среда разработки). По своей сути она подобна интерпретатору, запущенному\n",
"в интерактивном режиме с расширенным набором возможностей (подсветка синтаксиса,\n",
"просмотр объектов, отладка и т.п.).\n",
"\n",
"Для запуска IDLE в Windows необходимо перейти в папку Python в меню “Пуск” и\n",
"найти там ярлык с именем «IDLE (Python 3 XX-bit)».\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/interact_4.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/interact_4.png)<!-- end figure -->\n",
"\n",
"\n",
"В Linux оболочка IDLE по умолчанию отсутствует, поэтому ее предварительно\n",
"нужно установить. Для этого, если у вас Ubuntu , введите в командной строке (для\n",
"Python 3.4):"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> sudo apt-get install idle-python3\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В результате IDLE будет установлен на ваш компьютер.\n",
"Для запуска оболочки, введите:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> idle-python3.4\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ниже представлен внешний вид IDLE в ОС Linux.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/interact_5.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/interact_5.png)<!-- end figure -->\n",
"\n",
"\n",
"## Пакетный режим работы\n",
"<div id=\"intro:run:interact:pack\"></div>\n",
"\n",
"Теперь запустим Python в режиме интерпретации файлов с исходным кодом\n",
"(пакетный режим). Создайте файл с именем `test.py`, откройте его с\n",
"помощью любого текстового редактора и введите следующий код:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = int(input())\n",
"print(a**2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Эта программа принимает целое число на вход и выводит его квадрат. Для\n",
"запуска, наберите в командной строке"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Terminal> python test.py\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Пример работы программы приведен в окне ниже.\n",
"\n",
"<!-- dom:FIGURE: [fig-intro/interact_5.png, width=600 frac=1.0] -->\n",
"<!-- begin figure -->\n",
"![](fig-intro/interact_5.png)<!-- end figure -->\n",
"\n",
"\n",
"\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"intro\" -->\n",
"<!-- doconce-section-nickname: \"run\" -->\n",
"<!-- End: -->\n",
"\n",
"<!-- Local Variables: -->\n",
"<!-- doconce-chapter-nickname: \"intro\" -->\n",
"<!-- End: -->"
]
}
],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}

2
src-intro/test.py Normal file
View File

@@ -0,0 +1,2 @@
a = int(input())
print(a**2)