#pragma css /css/2019.css
<<BI>>

= Python I курс 2019 =
== Материалы к занятию 1 ==
=== Процесс написания программы ===
 1. Пишете текст программы в файле с расширением "`.py`"
 1. Помещаете файл в подходящую директорию на kodomo
 1. Запускаете программу командой `python3 <имя файла>` на тестовых примерах
 1. Если программа:
   * выдаёт ошибку, то редактируете файл и повторяете п.3.
   * не выдаёт ошибки, но выдаёт неверные результаты, редактируете файл и повторяете п.3.
   * выдаёт верные результаты, тестируете на других примерах
   * ... и так пока не убедитесь, что программа работает верно
 1. Если это домашнее задание или контрольная: переименовываете файл в соответствии с требованиями и помещаете в требуемую диркторию (credits или homeworks)

=== Python как калькулятор ===
Выполнив в командной строке на kodomo команду `python3`, попадаете в интерактивную среду python, в которой можете экспериментировать с возможностями языка (или просто подсчитывать что-нибудь).

Выход из интерактивной среды: `Ctrl-D` или `exit()` или `quit()`.

=== Типы int, float, str ===
Тип переменной (как правило) автоматически определяется при первом присваивании ей значения.
Присваивание выглядит как <переменная> = <значение>. Например:
{{{
a = 5
w256 = 3.8
newstring = "New string" 
}}}
Переменная a — типа int, переменная w256 — типа float, переменная newstring — типа str.

Тип int предназначен для хранения целых чисел, тип float — действительных чисел, тип str — строк.

Строка "5.6" и число 5.6 — разные вещи!
Преобразование между типами делается так:
{{{
a1 = "5.6"
b1 = float(a1)
a2 = 5.6
b2 = str(a2)
c2 = int(a2)
d2 = round(a2)
a3 = float(5)
}}}
Выполните всё это и обратите внимание на разницу между значениями с2 и d2.

''Замечание: в компьютере могут храниться только те действительные числа, которые являются кратными некоторой (достаточно маленькой) целой отрицательной степени двойки. Другие числа (например, 1/10) могут храниться только в приближённом виде.''

''Упражнение: умножьте 0.2 на 0.2 и объясните результат''

=== Действия над числами и строками ===

+ и – (в случае чисел) понятно.

`*` означает умножение, а `**` возведение в степень.

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

% означает взятие остатка от деления

Строки можно складывать между собой операцией + и умножать на числа.

=== Консольный ввод и вывод ===
Чтобы в программу можно было ввести данные с консоли, надо написать что-то вроде:
{{{
newstr = input("Please input something: ")
}}}
В переменную newstr попадёт строка (тип str), состоящая из всего, что пользователь введёт до нажатия клавиши Enter.

Чтобы ввести в программу число с консоли, надо написать что-то вроде:
{{{
newint = int(input("Please input a number: "))
}}}
и аналогично с float.

Функция print() выводит на консоль свои аргументы.

=== Некоторые встроенные функции ===
Python знает некоторое количество т.н. "встроенных функций".
Примерами являются уже упомянутые print, input и round, а также все названия типов: int, float, str, ...
Полный список встроенных функций см. https://docs.python.org/3/library/functions.html

Полезная встроенная функция: len, которая возвращает длину своего аргумента – строки.

С числами работают функции abs, max, min. При этом функции max и min могут принимать любое число аргументов, например:
{{{
>>> max(5, 7, -1)
7
}}}

=== Метод строки format ===
У каждого типа есть свой список методов. 
Метод — это фактически функция, первый аргумент которой пишется не в скобках, а предшествует названию метода и отделяется от него точкой.
Например (метод строки upper):
{{{
>>> s = "abc"
>>> s
'abc'
>>> s.upper()
'ABC'
}}}

Полный список методов строки можно получить, выполнив в интерактивной среде Python команду:
{{{
>>> dir(str)
}}}
(стоит обращать внимание только на методы, не начинающиеся с подчёркивания).

Часто используемый метод строки — format. Пример применения:
{{{
a = 2
print("Square root of {} is {:.4f}".format(a, a ** 0.5))
}}}
В данном случае на консоль будет выдано:
{{{
Square root of 2 is 1.4142
}}}
Пояснение: каждому аргументу в круглых скобках после "format" должна соответствовать пара фигурных скобок в строке.
Если в фигурных скобках ничего нет: "`{}`", данные форматируются по умолчанию.
"`{:.4f}`" означает, что соответствующее число должно быть напечатано с четырьмя знаками после десятичной точки.

Пока достаточно этого примера, но вообще можете попробовать почитать https://docs.python.org/3/library/string.html#formatstrings 
Только не впадайте в депрессию, если ничего не поймёте `:)` Лучше поэкспериментируйте в интерактивной среде и позадавайте нам вопросов.

=== Некоторые символы форматирования в строках ===
Вот такая строка:
{{{
s = "A\tB\tC\naa\tbb\tcc"
}}}
будет напечатана функцией print следующим образом:
{{{
>>> print(s)
A       B       C
aa      bb      cc
}}}
потому что `\n` означает переход к новой строке на печати, а `\t` — переход к очередной позиции табулятора (обычно это позиции с номерами, кратными 8, если номером первой позиции считать 0). Если всё ещё непонятно, стоит поэкспериментировать.

Обратите внимание, что `\n` — это один байт, а не два, и аналогично `\t`:
{{{
>>> len("a\tb")
3
}}}