Блоки кода
Программа исполняется не по принципу “Делай все подряд”, а блоками. Блок кода — это код, который выполняется последоватьно от начала до конца. Что бы конкретный блок выполнился, его надо вызвать. Вызов — это обращение к конкретной области кода, памяти или иных ресурсов. В разных языках программирования блоки кода выделяются по-разному. Где то зарезервированными сломами begin и end, где то фигурными скобками { и }. В языке Python для обозначения блоков используются отступы (знак табуляции или 4 символа пробела).
Так же стоит помнить про код, который выполняется без вызова, по умолчанию. В языке Python по-умолчанию выполняется код, который написан на первом уровне (без каких либо отступов).
Где же применяются блоки? Обычно ими выделяют код, который относится к функциям, условным операторам, циклам и тд. Т.е тот код, который должен исполниться только в случае обращения.
Пример:
#Это однострочный комментарий, он игнорируется интерпритатором
#Комментарии служать как помощь, пояснение или напоминания для самих разработчиков
#Код ниже исполнится в любом случае, так как перед ним нет никаких отступов
print ("Hello world!")
#Далее идет условный оператор, так же на первом уровне.
if True: #Знаком двоеточие обозначают начало кода, который относится в данной конструкции
#Как можно заметитть, появился отступ
#значит этот код выполнится только в случае, если в условии if будет значение True
print ("Этот код выполнится, только в случае True в операторе if")
print ("Вторая команда оператора if")
a=3
b=3
if a==b:
#Следующий if
#Следующий уровень
#Код выполнится ТОЛЬКО в случае, если в этом if мы получаем True
print ("a = b")
#Этот код уже на первом уровне, значит он будет исполняться в любом случае
print ("Этот текст напечатается всегда")
Циклы
Не редко случаются ситуации, когда необходимо один и тот же код выполнить множество раз. Это можно сделать разными способами: написал подряд один и тот же код, сделать сложные и ветвящиеся if-ы и тд. Но стоит помнить, что чем больше и сложнее код, тем он хуже работает, тем проще допустить в нем ошибку и тем сложнее его поддерживать. По этому правильно использовать ЦИКЛЫ.
Цикл — по сути это повторы выполнеия одних и тех же шагов. Есть два основных типа циклов: while и for
Цикл while
Пример:
a=10
while a>0:
#Отступ. Значит код ниже относится к циклу
print (a)
a-=1
Цикл while выполняется пока услове его выполнеия равно True.
В примере выше переменной a присвоено значение 10. Затем запускается цикл while в котором сравнивается значение a с нулем. Если а больше 0, то мы выводим текущее значение a, и следующим шагом вы вычитаем из текущего значения a единицу. Затем мы возвращаемся в начало цикла и вновь сравниваем с 0. Если вновь число больше 0 — повторяем все шаги. И так до тех пор, пока после выполнения a-=1 переменная a не станет равно 0. В этом случае на этапе сравнения мы получим False и цикл прекратит свое выполнения (шаги не будут выполнены)
В результате вывод программы будет:
10
9
8
7
6
5
4
3
2
1
Конструкция -= — это сокращенное вычитание. Так же может быть +=, *=, /=. Формат:
<переменная, которую мы модифицируем> += <число, на которую мы изменяем эту переменную>
Есть дополнительные операторы для управления циклом. Кратко о них:
Оператор continue — используется для перехода на следующий шаг, с пропуском всех оставшихся оператов в цикле
Оператор break — выход из цикла, не смотря на то, что условие выхода не достигнуто
Пример:
a=10
while True: #Запуск бесконечного цикла, так как всегда будет True
if a==5: #Если а равно 5, то присваеваем значение 3 и переходим на следующий шаг
a=3
print ("Пора бы пропустить уже хотя бы шажок")
continue
print (a)
a-=1
if a==-1:
print ("ну хватит уже")
break
Результат:
10
9
8
7
6
Пора бы пропустить уже хотя бы шажок
3
2
1
0
ну хватит уже
Такой резудльтат, потому что каждый шаг цикла мы вовдим число а и уменьшем его на единицу. В случае, если оно равно 5 то выведется текст и значению a присвоется 3. После того, как значение а станет равно -1 произойдет выход из цикла.
Цикл for
Цикл for является аналогом цикла while. Отличие лишь в том, что while работает до тех, пока условие выполнения True, а фор перебирает значения в каком либо списке. Выполнение цикла заканчиваются, когда в списке не останется непройденных элементов.
Пример:
for i in <list>:
#команды, которые будут выполняться в цикле
В качестве списка можно использовать как созданный ранее, так и воспользоваться командой из прошлого урока range()
Пример применения range(), программа выведит числа от 0 до 10 (на экран выведится число 9 последним)
for i in range(10):
print (i)
в результате будет
0
1
2
3
4
5
6
7
8
9
Все команды что управляют циклом while так же работают с циклом for
Цикл for используется именно для переборов: перебор строк в файле, перебор объектов в любом массиве и тд. Цикл while используется когда необходимо зацикленные приложения делать, когда необходимо циклы по условиям делать и тд.
Задание:
Необходимо реализовать приложение калькулятор.
При запуске программа запрашивает действие — сложение, вычитание, умножение или деление. Так же пользователь может выйти, напечатав букву Q.
После ввода желаемого арифметического действия, программа должна запросить два числа и вывести результат этого действия
Задание 2:
Составить задачу-расчет зп сотрудников компании.
Алгоритм расчета — зная дневную ставку каждого сотрудника, вычислить сколько сотрудник заработает от 1 числа месяца до указанного. Так же необходимо учесть возможность выплаты премий (стандартная премия равна 2-м дневным ставкам, премий в месяц может быть выдано скольно угодно)
При старте программы пользователю должно отобразиться меню, где будут предложены следующий варианты:
- Просмотр списка сотрудников (выводит их имена и ставки)
- Добавление нового сотрудника (при добавлении указывается Имя и Фамилия, а так же дневная ставка)
- Изменить дневную ставку сотрудника
- Назначение премии
- Расчет зп до конкретной даты
- Обнуление месяца (по сути — сброс всех премий)
В случае выбора 4 пункта, программа должна спросить, до какого числа расчитать зарплату. Далее должен произойти расчет зп до этой даты, к этой цифре должна добавиться вся назначенная премия.
В рамках данной программы взять 1 число за понедельник
Доп задание:
При запуске программы и при обнулении месяца, указывать, на какой день недели выпадает 1 число