Ctrl+Enter
Так как текст местами пишется с нуля, то в нём хватает опечаток, неточностей и ошибок. Если вы заметили опечатку или ошибку, выделите её, нажмите Ctrl+Enter и опишите проблему.
Точно также можно поступить, если какой-то кусок текста непонятен. Такая отметка поможет сделать мои тексты лучше. Спасибо!
О данном учебном материале
Значительная часть текстов изначально сделаны Денисом Кириенко и частично соответствуют текстам на информатиксе. Все отличия от оригинальных текстов Дениса внесены мной (Сергеем Шашковым, sh57@ya.ru) на основе документации, экспериментов, исходных кодов и обсуждений на stackoverflow.

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

Когда этот знак появляется в начале раздела, это предупреждает читателя об "опасном повороте". Не читайте этот блок без необходимости. Для большинства приложений такие детали не имеют значения.

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

Интерактивный интерпретатор

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

В настоящее время существует две версии языка Python: более старая, но пока ещё широко распространённая версия 2 и современная версия 3. Они не вполне совместимы друг с другом: программа, написанная для одной версии языка, может оказаться невыполнимой для другой версии. Но в основном обе версии очень похожи.

Мы будем использовать версию 3 данного языка, некоторые из используемых примеров не будут работать с версией 2. Последняя версия языка, доступная в июне 2017 года — 3.6.1. О том, что и как нужно установить дома, будет написано ниже (в 10-й задаче). Первые эксперименты удобно провести в интерактивной консоли на страничке https://www.python.org/shell/.

Итак, в интерактивной консоли вы увидите примерно следующее приглашение командной строки:

Python 3.6.0 (default, Jan 13 2017, 00:00:00)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Смело вводите команды и наслаждайтесь результатом. А что можно вводить? Несколько примеров:

>>> 2 + 2
4
>>> 2 ** 100
1267650600228229401496703205376
>>> 123454321**0.5
11111.0
>>> 'Hello' + 'World'
'HelloWorld'
>>> 'ABC' * 10
'ABCABCABCABCABCABCABCABCABCABC'

Первая команда вычисляет сумму двух чисел, вторая команда вычисляет 2 в степени 100, третья команда извлекает квадратный корень из числа 123454321, четвёртая команда выполняет операцию конкатенации (склейку) для строк, а пятая команда печатает строку 'ABC', повторенную 10 раз.

Типы данных

Итак, мы видим, что Питон умеет работать как минимум с двумя видами данных — числами и строками. Числа записываются последовательностью цифр, также перед числом может стоять знак минус, а строки записываются в одинарных кавычках. 2 и '2' — это разные объекты, первый объект — число, а второй —строка. В питоне вообще все данные называются объектами. Число 2 представляется объектом «число 2», строка 'hello' – это объект «строка 'hello'». Каждый объект относится к какому-то типу. Строки хранятся в объектах типа str, целые числа хранятся в объектах типа int. Тип объекта определяет, какие действия можно делать с объектами этого типа. Так операция + для целых чисел и для строк работает по-разному: для чисел это сложение, а для строк —конкатенация.

Кроме целых чисел есть и другой класс чисел: действительные (вещественные числа), представляемые в виде десятичных дробей. Они записываются с использованием десятичной точки, например, 2.0. В каком-то смысле, 2 и 2.0 имеют равные значение, но это —разные объекты. Например, можно вычислить значения выражения 'ABC' * 10 (повторить строку 10 раз), но нельзя вычислить 'ABC' * 10.0.

Определить тип объекта можно при помощи функции type:

>>> type(2)
<class 'int'>
>>> type('2')
<class 'str'>
>>> type(2.0)
<class 'float'>

Обратите внимание —type является функцией, аргументы функции указываются в скобках после ее имени.

Вот список основных операций для чисел:
A + B — сумма;
A - B — разность;
A * B — произведение;
A / B — частное;
A ** B — возведение в степень. Полезно помнить, что квадратный корень из числа x — это x ** 0.5, а корень степени n это x ** (1 / n).

Есть также унарный вариант операции -, то есть операция с одним аргументом. Она возвращает число, противоположное данному. Например: -A.

В выражении может встречаться много операций подряд. Как в этом случае определяется порядок действий? Например, чему будет равно 1 + 2 * 3 ** 1 + 1? В данном случае ответ будет 8, так как сначала выполняется возведение в степень, затем — умножение, затем — сложение.

Более общие правила определения приоритетов операций такие:
1. Выполняются возведения в степень справа налево, то есть 3 ** 3 ** 3 это \(3^{(3^3)}\).
2. Выполняются унарные минусы (отрицания).
3. Выполняются умножения и деления слева направо. Операции умножения и деления имеют одинаковый приоритет.
4. Выполняются сложения и вычитания слева направо. Операции сложения и вычитания имеют одинаковый приоритет.

Основные операции над строками:
A + B — конкатенация;
A * n — повторение n раз, значение n должно быть целого типа.

Преобразование типов

Иногда бывает полезно целое число записать, как строку. И, наоборот, если строка состоит из цифр, то полезно эту строку представить в виде числа, чтобы дальше можно было выполнять арифметические операции с ней. Для этого используются функции, одноименные с именем типа, то есть int, float, str. Например, int('123') вернет целое число 123, а str(123) вернет строку '123'.

Пример:

>>> str(2 + 2) * int('2' + '2')
'4444444444444444444444'

Результатом будет строка из числа 4, повторенная 22 раза.

Упражнения

Как сдавать задачи

В задачах 1-9 нужно написать программу из одной строки вида print(2 + 2), где вместо 2 + 2 будет выражение, которое необходимо вычислить в этой задаче. Первые эксперименты удобно провести в интерактивной консоли на страничке https://www.python.org/shell/.

Когда программа готова, нужно зайти на страничку сдачи, ввести свои логин (вида s22a_sidoroff) и пароль (присланный по почте и смской).

После этого выбрать задачу, которую хочется сдать.

Скопировать код программы в окно и нажать кнопку "Отправить!". Также можно указать файл с кодом программы.

Через некоторое время тестирование программы будет окончено, появится надпись "ТЕСТИРОВАНИЕ ЗАВЕРШЕНО". Теперь нужно обновить страницу и посмотреть результат.

Если программа не засчитана, то нужно посмотреть протокол проверки.

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

Вопросы

Для вопросов и обсуждений задач лучше всего установить себе телеграм.

A: 2 в степени 179

Вычислите \(2^{179}\) .

Он-лайн консоль с питоном.
Тестирующая система.

B: 20 факториал

Вычислите \(20!\).

(В этой задаче не предполагается ничего хитрее 1 * 2 * 3 * ...)

C: Длина гипотенузы

Вычислите длину гипотенузы в прямоугольном треугольнике со сторонами \(179\) и \(971\) по теореме Пифагора.

D: Пи и ряд Лейбница

Для вычисления числа \(\pi\) можно использовать следующее приближение (ряд Лейбница): \[ \pi = \frac{4}{1} - \frac{4}{3} + \frac{4}{5} - \frac{4}{7} + ... \]

Вычислите сумму первых 10 слагаемых этого ряда. Сколько получилось?

Подсказка
Да что-то непонятное тут требуют...

Если бы требовалось вычислить сумму 2 слагаемых, то ответ был бы

print(4/1 - 4/3)

E: Пи и дзета-функция

А вот другой ряд, в котором вычисляется значение дзета-функции для числа 2: \[ \frac{\pi^2}{6} = \frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\frac{1}{4^2}+ ... \] Вычислите приближение к числу \(\pi\) (то есть ответ должен быть близок к числу \(\pi\)), используя первые 10 членов этого ряда. Сколько получилось?
Подсказка
Да что-то непонятное тут требуют...
Если бы требовалось вычислить $\pi^2$, используя первые два члена, то ответ был бы
print(6 * (1 / 1**2 + 1 / 2**2))

F: Сто раз А

Напишите программу, которая выводит \(100\) раз подряд букву 'A' (латинскую, заглавную).

G: Сто раз Python

Напишите программу, которая выводит слово 'Python' \(100\) раз подряд (только буквы, без кавычек).

H: Строки и числа - 1

Число \(179\) записали \(50\) раз подряд. Полученное \(150\)-значное число возвели в квадрат. Сколько получилось?

I: Строки и числа - 2

Число \(179^{10}\) записали четыре раза подряд. Из получившегося числа извлекли корень степени \(10\) (то есть возвели число в степень \(1/10\)). Сколько получилось?

J: Скриншот среды разработки Wing IDE или PyCharm

Эта задача, пожалуй, самая сложная.

Необходимо установить дома интерпретатор питона и среду разработки. Все необходимые программы ставятся и на Windows, и на OS X, и на основные дистрибутивы Linux.

Инструкция по установке

В качестве интерпретатора рекомендуется установить сборку ANACONDA, с ней задача установки некоторых пакетов в будущем будет значительно проще. Скачать её можно на страничке https://conda.io/miniconda.html. Необходимо брать версию для Python 3.6.

В качестве среды разработки предлагается использовать PyCharm или Wing IDE. PyCharm по началу будет ужасно тяжёлым, тормозным, противным и непонятным. Но он предлагает довольно много плюшек, которыми удобно пользоваться. Если не удастся с ним сдружиться, то можно начать с Wing IDE. Со страницы PyCharm (https://www.jetbrains.com/pycharm/download) скачайте версию Community Edition, она бесплатная. После установки создайте проект "Информатика179" и выберите для него установленный интерпретатор. Внутри проекта можно создавать файлы с программами и подпапки для отдельных листков. Основные горячие клавиши: Ctrl+Shift+F10 — запустить текущую программу в отдельном процессе; Ctrl+Shift+E — выполнить выделенный код в консоли; Tab и Shift+Tab — сдвинуть блок на одну позицию вправо или влево.

Также со страницы Wing IDE (http://www.wingware.com/downloads/wingide-101) скачайте версию Wing 101, она бесплатная. Эта среда разработки гораздо проще и быстрее (из-за простоты). В случае проблем с PyCharm можно начинать работать в ней.

Итак, установите интерпретатор и среду разработки. Напишите простую программу. Запустите ее. Сделайте скриншот, демонстрирующий работу среды Wing IDE или PyCharm и Python, сохраните его в формате JPEG или PNG (если никак не получается в JPEG), картинку со скриншотом сдайте в тестирующую систему. Подсказку о том, как сделать скриншот, можно почитать на этой странице.

Следующая тема