Курс
"Программирование Phyton"
Базовые структуры данных
Работа с переменными, разбор типов данных, которые присутствуют в языке Python
Создание нескольких простых программ с применением переменных

Начинающим программистам может быть не совсем понятно, зачем вообще что-то записывать в переменную, если можно просто оперировать значениями без них. Понимание переменных придет немного позже, когда мы начнем создавать более сложные программы и нам потребуется хранить большие объемы информации
Переменная хранит определенные данные
Название переменной в Python должно начинаться с алфавитного символа или со знака подчеркивания и может содержать алфавитно-цифровые символы и знак подчеркивания. И кроме того, название переменной не должно совпадать с названием ключевых слов языка Python. Ключевых слов не так много, их легко запомнить: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield
Типы переменных в языке Python не объявляются очевидно, тем не менее, они присутствуют. Интерпретатор понимает, что записывается в переменную, и на основании этого добавляет тип к этой переменной.
Во время исполнения программы есть возможность перезаписывать переменные, а также менять их тип. Если вначале переменной был задан тип float, то потом её можно преобразовать в другой тип, например string.
first_num = 23.2 # Тип данных float
first_num = "1" # Тип данных string
При объединении нескольких переменных с разными типами данных программа спровоцирует ошибку
Пример:
first_num = "IloveYou"
second_num = 13
res = first_num + second_num # Скрипт выдаст ошибку
Переменная хранит данные одного из типов данных. В Python существует множество различных типов данных, которые подразделяются на категории: числа, последовательности, словари, наборы:
boolean - логическое значение True или False
int - представляет целое число, например, 1, 4, 8, 50
float - представляет число с плавающей точкой, например, 1.2 или 34.76
complex - комплексные числа
str - строки, например "hello". В Python 3.x строки представляют набор символов в кодировке Unicode
bytes - последовательность чисел в диапазоне 0-255
byte array - массив байтов, аналогичен bytes с тем отличием, что может изменяться
list - список
tuple - кортеж
set - неупорядоченная коллекция уникальных объектов
frozen set - то же самое, что и set, только не может изменяться (immutable)
dict - словарь, где каждый элемент имеет ключ и значение
На этом занятии мы разберем 4 базовых типа переменных:
some = 1
Integer - целые числа;
some = 1.12
Float - числа с плавающей точкой;
some = "Привет"
String - строки;
some = True
Boolean - тип данных принимающий либо False, либо True
Более сложные типы данных мы будем разбирать в последующих уроках.
В одной строке можно создать сразу несколько переменных:
first = sec = third = 1 # Всем трём переменным будет присвоено значение 1
first, sec, third = "Hi", 75, 23.1 # Поочередное присвоение значений
Исходный код
Небольшой калькулятор
num_1 = float (input ("Enter first num: "))
num_2 = float (input ("Enter second num: "))
res = float (num_1) + num_2
Res = input ("Enter something: ")
Res *= 5
print (Res)
print ("Result is", res)
Детали:
В Python применяется два типа наименования переменных: camel case и underscore notation.
Camel case подразумевает, что каждое новое подслово в наименовании переменной начинается с большой буквы. Например:
userName = "Tom"
Underscore notation подразумевает, что подслова в наименовании переменной разделяются знаком подчеркивания. Например:
user_name = "Tom"
И также надо учитывать регистрозависимость, поэтому переменные name и Name будут представлять разные объекты.
Python является языком с динамической типизацией. Он определяет тип данных переменной, исходя из значения, которое ей присвоено. Так, при присвоении строки в двойных или одинарных кавычках переменная имеет тип str. При присвоении целого числа Python автоматически определяет тип переменной как int. Чтобы определить переменную как объект float, ей присваивается дробное число, в котором разделителем целой и дробной части является точка. Число с плавающей точкой можно определять в экспоненциальной записи.
При этом в процессе работы программы мы можем изменить тип переменной, присвоив ей значение другого типа.
С помощью функции type() динамически можно узнать текущий тип переменной:
user_id = "12tomsmith438"
print(type(user_id)) # <class 'str'>
user_id = 234
print(type(user_id)) # <class 'int'>
Для закрепления материала:
Создать программу, которая позволит ввести 5 десятичных чисел и вывести их на печать в двоичной, восьмеричной и шестнадцатеричной системах
Основные операторы

Изучение арифметических и условных операторов
С помощью условного оператора if мы можем выполнять разный код в зависимости от различных типов условий
Развитие логики
В этом занятии мы вводим понятия логических и арифметических операций и составим программы, которые позволят выполнять тот или иной код в соответствии с заданными условиями. Таким образом, мы сможем решать довольно сложные логические задачи.
Начнем с базовых арифметических операторов.
Код и сопроводительные материалы
Условные операторы, исключения

Логические деревья, случайный лес
Отработка навыков создания логических структур
Игровой пример, понимание - для чего мы прорабатываем логические структуры
На прошлом занятии мы изучили условные конструкции, которые используют условные выражения и в зависимости от их значения направляют выполнение программы по одному из путей
Условные операторы – это линейный метод решения логических задач. Линейные методы обладают рядом важных достоинств: быстро обучаются, способны работать с большим количеством объектов и признаков, имеют небольшое количество параметров, легко регуляризуются
В данном занятии мы затронем тему логических (решающих) деревьев, которые хорошо описывают процесс принятия решения во многих ситуациях. Например, когда клиент приходит в банк и просит выдать ему кредит, то сотрудник банка начинает проверять условия:
1. Какой возраст у клиента? Если меньше 18, то отказываем в кредите, иначе продолжаем
2. Какая зарплата у клиента? Если меньше 50 тысяч рублей, то переходим к шагу 3, иначе к шагу 4
3. Какой стаж у клиента? Если меньше 10 лет, то не выдаем кредит, иначе выдаем
4. Есть ли у клиента другие кредиты? Если есть, то отказываем, иначе выдаем
Такой алгоритм, как и многие другие, очень хорошо описывается решающим деревом
Что такое исключение?
Вспомните самую привычную ошибку ввода, когда в форме вместо e-mail мы в спешке пытаемся ввести абстрактные данные – форма сообщает об ошибке, соответственно, кто-то предусмотрел такой вариант развития событий и продумал, как обезопасить итоговый результат
Предположим, что вы разработали программу «Текстовый редактор». В программе пользователь может создать новый файл, вписать в него данные и далее сохранить файл в системе.
Если код прописан корректно, то никаких ошибок возникать не будет. Но давайте представим ситуацию, что пользователь открыл редактор, открыл нужный файл, записал в него данные, далее вручную удалил файл с компьютера и потом попытался сохранить файл через вашу программу
При таком раскладе у вас получится ошибка, которая сломает программу и отобьет любое желание у пользователя работать в ней.
Получается, исключение – это ошибка, что возникает в ходе работы самой программы. Отслеживать такие ошибки при помощи условных операторов не всегда возможно, ведь программа уже запущена, поведение пользователя нам неизвестно заранее, а значит и «ловить» ошибку нам нужно в момент её создания
Отлов ошибок
Для вышеописанного случая как раз и нужна конструкция try except для отлова ошибок в момент их создания.
При помощи данной конструкции вы можете отслеживать ошибки различных форматов и событий. Можно отследить неверное открытие файла, неверное подключение класса, неверное написание переменной или функции, да чего уж там, даже деление чисел на ноль!
Задание
В качестве примера давайте напишем программу, которая будет эмулировать поведение продавца магазина мороженого. Продумайте и запишите при помощи условных операторов возможный диалог с покупателем, покупку или отказ от нее