Первый коммит
892
arithmetic.ipynb
Normal 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
@@ -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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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
|
After Width: | Height: | Size: 61 KiB |
BIN
fig-datatype/refs.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
fig-intro/anaconda_inst_1.png
Normal file
|
After Width: | Height: | Size: 204 KiB |
BIN
fig-intro/anaconda_inst_10.png
Normal file
|
After Width: | Height: | Size: 340 KiB |
BIN
fig-intro/anaconda_inst_11.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
BIN
fig-intro/anaconda_inst_2.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
fig-intro/anaconda_inst_3.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
fig-intro/anaconda_inst_4.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
fig-intro/anaconda_inst_5.png
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
fig-intro/anaconda_inst_6.png
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
fig-intro/anaconda_inst_7.png
Normal file
|
After Width: | Height: | Size: 427 KiB |
BIN
fig-intro/anaconda_inst_8.png
Normal file
|
After Width: | Height: | Size: 374 KiB |
BIN
fig-intro/anaconda_inst_9.png
Normal file
|
After Width: | Height: | Size: 377 KiB |
BIN
fig-intro/check_1.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
fig-intro/check_2.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
fig-intro/check_3.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
fig-intro/check_4.png
Normal file
|
After Width: | Height: | Size: 274 KiB |
BIN
fig-intro/check_5.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
fig-intro/check_6.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
fig-intro/interact_1.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
fig-intro/interact_2.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
fig-intro/interact_3.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
fig-intro/interact_4.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
fig-intro/interact_5.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
fig-intro/pack_1.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
fig-intro/python_downloads.png
Normal file
|
After Width: | Height: | Size: 230 KiB |
BIN
fig-intro/python_dwl_list_files.png
Normal file
|
After Width: | Height: | Size: 135 KiB |
BIN
fig-intro/python_inst_1.png
Normal file
|
After Width: | Height: | Size: 255 KiB |
BIN
fig-intro/python_inst_2.png
Normal file
|
After Width: | Height: | Size: 260 KiB |
BIN
fig-intro/python_inst_3.png
Normal file
|
After Width: | Height: | Size: 270 KiB |
BIN
fig-intro/python_inst_4.png
Normal file
|
After Width: | Height: | Size: 218 KiB |
722
intro.ipynb
Normal 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- end figure -->\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"В результате запустится веб-сервер и среда разработки в браузере.\n",
|
||||||
|
"\n",
|
||||||
|
"<!-- dom:FIGURE: [fig-intro/check_5.png, width=600 frac=1.0] -->\n",
|
||||||
|
"<!-- begin figure -->\n",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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",
|
||||||
|
"<!-- 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
@@ -0,0 +1,2 @@
|
|||||||
|
a = int(input())
|
||||||
|
print(a**2)
|
||||||