Ctrl+Enter

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

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

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

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

Ни один программист не обходится без консоли 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 раз.

Эксперименты

Вот интерактивная консоль. Попробуйте в ней сложить несколько чисел побольше, сложить пару строк и т.п.

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

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

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

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

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

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

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

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

Вопросы

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

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

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

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

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

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

Вычислите \(20! = 1 \cdot 2 \cdot 3 \ldots \cdot 20 \).
Сдать нужно выражение, которое это число вычисляет, а не сам ответ.

Типы данных

Итак, мы видим, что Питон умеет работать как минимум с двумя видами данных — числами и строками. Числа записываются последовательностью цифр, также перед числом может стоять знак минус, а строки записываются в одинарных кавычках. 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\) по теореме Пифагора: длина гипотенузы равна $\sqrt{a^2+b^2}$. Извлечение квадратного корня из числа — это возведение в степень $\dfrac{1}{2}$.

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

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

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

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

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

4/1 - 4/3

E: Прогресс в пробежках

Если 1 января пробежать 1 километр, а в каждый следующий день увеличивать пробег на 1% по сравнению с предыдущим днём, то какая будет величина пробега 31 декабря? (в году 365 дней).

Подсказка
Да что-то непонятное тут требуют...
Увеличить на 1% — всё равно, что умножить на $1.01$. Умножить так несколько раз — это возвести в степень.

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

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

F: Адын-адын

Напишите программу, которая выводит 179 раз подряд цифру 1.

G: Много Python'а

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

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

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

Пример:

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

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

H: Красивые числа

Квадраты чисел из одних единиц выглядят красиво: \(11^2=121\), \(111^2=12321\), \(1111^2=1234321\). Возведите в квадрат число, записанное при помощи 179 единиц.

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

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

J: Приоритет при возведении в степень

Операции сложения, вычитания, умножения, деления выполняются слева направо, например, 20 / 2 / 2 будет равно 5.0.
А в каком порядке (слева направо или справа налево) выполняются операции возведения в степень? Определите это, экспериментируя с Python.
На проверку нужно сдать текст с вашими выводами и объяснениями, как были получены эти выводы.

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

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

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

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

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

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

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

Так как обучение у нас продлится долго, то удобно установить приложение JetBrains Toolbox App, через которое будет удобно устанавливать и обновлять PyCharm, а позже — и другие инструменты.

K: Скриншот среды разработки PyCharm

Эта задача, пожалуй, самая сложная. Установите интерпретатор и среду разработки по инструкции выше. Создайте проект, в нём создайте папку для контеста 01, в нём — файл J.py. Вставьте в него код:

print('Горячие клавиши для запуска:')
print('Ctrl+Shift+F10 в Windows и Linux')
print('Ctrl+Option+R в MacOS')

Запустите эту программу. Сделайте скриншот, картинку со скриншотом сдайте в тестирующую систему.

Должно получиться что-то такое:

Как сделать скриншот в Windows:

  1. Запустите среду разработки.
  2. Нажмите на кнопку PrtSc (Print Screen). Изображение экрана скопируется в буфер обмена.
  3. Запустите редактор Paint. Вставьте картинку из буфера обмена.
  4. Сохраните картинку.

M: Отправить письмо и получить ответ

В этой задаче вам нужно продемонстрировать, что вы научились пользоваться почтой 179-й школы. Открываете страницу http://mail.179.ru, вводите свой логин и пароль. Дальше вам нужно отправить письмо на адрес s22b_savvateev@179.ru с запросом кода. Я в ответ его пришлю.

T: Отправить вопрос в телеграм и получить ответ

В этой задаче вам нужно продемонстрировать, что вы научились пользоваться телеграмом. Напишите мне или моему коллеге вопрос на t.me/Dart_Xeyter или на t.me/Eyakm1 соответственно, и мы пришлём ответ. Туда же можно писать, если код по какой-то странной причине не работает и из-за тому подобных вещей. Не забудьте представиться :)