Ctrl+Enter

Ошибка или опечатка? Выдели её, нажми Ctrl+Enter и коротко опиши, что не так. Это сделает наши материалы лучше!

Опасный поворот

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

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

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

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

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

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

Ни один программист не обходится без консоли Python — REPL (read-eval-print loop — «цикл "чтение-выполнение-вывод"»), чтобы протестировать свой код на первых этапах его создания. REPL можно узнать по "шевронам" в начале строки >>> : так консоль сообщит, что готова получить команду. Когда команда готова, нужно нажать клавишу Enter.

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

>>> 2 + 2 * 2
6

>>> 2 ** 100
1267650600228229401496703205376

>>> 123454321**0.5
11111.0

>>> 'Hello' + 'World'
'HelloWorld'

>>> 'ABC' * 10
'ABCABCABCABCABCABCABCABCABCABC'

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

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

В задачах A-I нужно написать программу из одной строки вида print(2 + 2), где вместо 2 + 2 будет выражение, которое необходимо вычислить в этой задаче.

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

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

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

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

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

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

Вопросы

Для вопросов и обсуждений задач лучше всего установить себе телеграм. Удобнее всего сначала установить telegram на свой смартфон, а потом — на свой компьютер. У telegram отличное приложение для компьютеров и отличная синхронизация между компьютером и смартфоном/планшетом. Приложение для android, iOS, winPhone. Для регистрации требуется номер телефона.

После установки на смартфон (это не обязательно, можно сразу на PC), можно установить приложение для компьютера. Для windows 10 можно установить из windows store. Для mac'а есть app store. Можно напрямую скачать дистрибутивы приложений: win, mac, linux

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

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

В тестирующую систему нужно сдать выражение вида print(2 ** 3). Текст из интерактивной консоли можно копировать: для этого его нужно выделить и нажать Ctrl+C или Cmd+C (на Mac).

IDE

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

Вычислите \(20! = 1 \cdot 2 \cdot 3 \ldots \cdot 20 \).
(В этой задаче не предполагается ничего хитрее 1 * 2 * 3 * ... * 20)

IDE

Типы данных

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

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

Основные операции с числами

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

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

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

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

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

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

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

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

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

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

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

print(4/1 - 4/3)
IDE

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))
IDE

Основные операции со строками

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

F: Сто раз А

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

IDE

G: Сто раз Python

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

IDE

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

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

Пример:

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

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

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

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

IDE

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

Число \(179^{10}\) записали четыре раза подряд. Получившееся число поделили на 3. Из результата извлекли корень степени \(11\) (то есть возвели число в степень \(1/11\)). Сколько получилось?
PS. Не забудьте про приоритеты операций!

IDE

Установка ПО на свой компьютер

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

Необходимые программы состоят из двух частей: интерпретатора и среды разработки (IDE). Интерпретатор отвечает за то, чтобы выполнить вашу программу. А среда разработки за то, чтобы её было удобно вводить, запускать и т.п.

Интерпретатор

Интерпретатор нужно взять отсюда. При установке крайне рекомендуется выбрать "Add Python 3.8 to PATH"

В качестве среды разработки предлагается использовать PyCharm или Wing IDE. PyCharm по началу будет ужасно тяжёлым, тормозным, противным и непонятным. Но он предлагает довольно много плюшек, которыми удобно пользоваться. Если не удастся с ним сдружиться, то можно начать с Wing IDE.

Среда разработки PyCharm

Со страницы PyCharm (https://www.jetbrains.com/pycharm/download) скачайте версию Community Edition, она бесплатная.

После установки и запуска нужно пройти через следующие этапы (во избежание будущих сложностей соблюдайте инструкцию):

Основные горячие клавиши: Ctrl+Shift+F10 — запустить текущую программу в отдельном процессе; Ctrl+Shift+E — выполнить выделенный код в консоли; Tab и Shift+Tab — сдвинуть блок на одну позицию вправо или влево.

Среда разработки Wing IDE

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

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

Эта задача, пожалуй, самая сложная. Установите интерпретатор и среду разработки. Откройте REPL и выполните в ней 2**1000. Сделайте скриншот, демонстрирующий работу среды Wing IDE или PyCharm и Python, сохраните его в формате JPEG, картинку со скриншотом сдайте в тестирующую систему. Подсказку о том, как сделать скриншот, можно почитать на этой странице.

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