Дата
Автор
Скрыт
Сохранённая копия
Original Material

Введение в Python. Часть 3


Введение в 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)} рублей.')