Введение в Python. Часть 3
Условия if, elif, else вместе с логическими операторами
В третьей лекции курса «Python для журналистов» мы поговорим об условиях: if, elif, else. И чтобы у этой лекции была практическая польза, мы попробуем решить с помощью условий простейшую задачу по подсчету налога и чистого дохода человека в зависимости от его налогового статуса. Для этой задачи мы возьмем несколько статусов физлиц:
- индивидуальный предприниматель («ИП1») — платит 15 % налогов со своих доходов за вычетом расходов;
- индивидуальный предприниматель («ИП2») — платит 6 % налогов со всех своих доходов;
- самозанятый («СЗ») — тоже платит 6 % со своих доходов;
- в остальных случаях физлица платят 13 % со своих доходов; их мы в задаче называем «ФЛ».
Наша задача будет в том, чтобы, используя условия if, elif, else, посчитать, сколько каждый из налоговых агентов заплатит налогов и какой будет чистый доход. Но прежде чем перейти к ее решению, рассмотрим функцию input, которая позволяет считывать данные от пользователя с клавиатуры.
Input
Например, мы хотим, чтобы пользователь мог сам вводить свое имя в нашей программе. Для этого введем переменную name и присвоим ей значение input(): name = input().
В появившемся окне можно ввести любое имя. Чтобы его распечатать, можно использовать функцию print: print(name).
Теперь, чтобы узнать налоговый статус человека, введем еще одну переменную business_type и тоже присвоим ей значение input(). Здесь нужно ввести один из четырех статусов нашей задачи — «ИП1», «ИП2», «СЗ», или «ФЛ».
Теперь введем третью, последнюю, переменную, которую мы будем считывать с клавиатуры — income: income = input().
В ее значение мы введем доход человека. И здесь важно помнить, что те значения, которые мы передаем input(), эта функция переводит в строки (тип str в Python). Для эксперимента попробуйте ввести цифру 100 в input для переменной income. А затем проверьте тип этого объекта: type(income) — будет тип str. Но нам это не подходит: со строками нельзя производить арифметические операции, которые нам необходимы для подсчета налогов и чистого дохода. Чтобы перевести тип income в int (это тип для целых чисел в Python), нам нужно немного изменить операцию присваивания: income = int(input()).
Если проверить теперь тип income с помощью type(income), то мы увидим int, что нам и нужно.
Условие if
If на английском означает «если». Соответственно, наш блок кода будет выполняться, только если будет выполнено какое-то условие. В общем виде синтаксис конструкции if выглядит следующим образом:
if условие:
делай что-то
Для простой практики попробуйте в новой ячейке Jupyter Notebook ввести новую тестовую переменную и присвойте ей какое-то значение: например, x = 10. А в следующей ячейке напишите простейшее условие:
if x == 10:
print(True)
True будет напечатано, потому что имя x действительно ссылается на объект 10.
Теперь давайте применим это знание, чтобы посчитать налоги для первого человека. Напишем такое условие:
if business_type == 'ИП1':
tax = income * 0.15
net_income = income - tax
В этом блоке кода мы говорим: «Если человек зарегистрирован как ИП1, то его налог будет равен 15 % от доходов (income * 0.15), а чистый доход будет равняться общему доходу минус сумма налогов (net_income = income - tax)».
Чтобы проверить наши вычисления, можно их напечатать: print(tax, net_income).
Но согласитесь, что хотя наша программа и считает все правильно, но хотелось бы, чтобы она выводила что-то более информативное для пользователя. В Python есть очень удобное форматирование строк с помощью буквы f перед открывающими строку кавычками. Применим его для более информативного вывода результатов работы нашей программы.
Форматирование строк
Допустим, мы хотим вывести такую строку: «Уважаемый ИМЯ, сумма вашего налога составит СТОЛЬКО-ТО рублей, а чистый доход СТОЛЬКО-ТО рублей». Для этого изменим наше выражение print на следующее:
print(f'{name}, ваш налог составит {int(tax)} рублей, а чистый доход -- {int(net_income)} рублей.'
В фигурные скобки заключены имена наших переменных.
Условие elif
Elif — это сокращенное от английского else if, что на русский язык можно перевести как «еще если». У elif такой же синтаксис, как у if:
elif условие:
делай что-то
Иными словами, если наше условие в if не выполнено, интерпретатор затем проверяет условие в elif, и если оно верно, то он выполняет блок кода под этим условием.
Проверим это на следующем налоговом агенте. Напишем такой блок кода:
elif business_type == 'ИП2':
tax = income * 0.06
net_income = income - tax
print(f'{name}, вы зарегистрированы как {business_type} ваш налог составит {int(tax)} рублей, а чистый доход -- {int(net_income)} рублей.').
Теперь вернитесь к началу тетрадки и задайте новые значения в функции input для переменных name, business_type (здесь нужно ввести ИП2) и income. Программа должна посчитать значения для «ИП2» и вывести их на экран.
Условия и логические операторы
Теперь нам нужно посчитать значения для самозанятых («СЗ»). У них ставка налога такая же, как у «ИП2». И естественным желанием было бы скопировать весь блок кода, который относится к «ИП2» и подставить его под «СЗ». Но это плохая практика. Лучше использовать в таком случае логический оператор. В нашем случае это оператор or, что на русский переводится как «или»:
elif business_type == 'ИП2' or business_type == 'СЗ':
tax = income * 0.06
net_income = income - tax
print(f'{name}, вы зарегистрированы как {business_type} ваш налог составит {int(tax)} рублей, а чистый доход -- {int(net_income)} рублей.')
В этом блоке кода мы как бы говорим: «Если тип равен „ИП2“ или тип равен „СЗ“, делай что-то».
Условие else
Условие else (что на русский переводится как «иначе») выполняется, если не были выполнены все условия выше. Поэтому его синтаксис в общем виде выглядит так:
else:
делай что-то
Обратите внимание, что само условие в конструкции else не уточняется, в отличие от if и elif. Что логично, потому что блок кода после него будет выполнен, только если не выполнены все условия выше.
Поэтому, чтобы посчитать налог и чистый доход для человека, работающего в какой-то организации, нам нужно просто написать:
else:
tax = income * 0.13
net_income = income - tax
print(f'{name}, вы зарегистрированы как {business_type} ваш налог составит {int(tax)} рублей, а чистый доход -- {int(net_income)} рублей.')
Тетрадку Jupyter Notebook с этим уроком можно найти в нашем GitHub здесь.