Андрюха, бензин и Игра престолов

Из-за эпи­де­мии Андрей пере­стал ездить на рабо­ту на машине и стал смот­реть сери­а­лы по под­пис­ке. От дома до рабо­ты — 10 кило­мет­ров, рас­ход топ­ли­ва — 11 лит­ров на сот­ню, а литр бен­зи­на сто­ит 45 рублей.

Смо­жет ли Андрей на сэко­ном­лен­ные от топ­ли­ва за 4 неде­ли день­ги посмот­реть всю «Игру пре­сто­лов», если каж­дый сезон сто­ит 300 рублей?

Решение

В зада­че есть один про­бел — мы не зна­ем, сколь­ко дней в неде­лю рабо­та­ет Андрей. Нам при­дёт­ся пере­брать все вари­ан­ты, что­бы понять, при каком рас­кла­де у него полу­чит­ся купить все сезо­ны «Игры престолов».

Что­бы не про­ве­рять всё вруч­ную, исполь­зу­ем Python. Если уже забы­ли, что это и как рабо­та­ет, — почи­тай­те нашу ста­тью.

Логи­ка будет такая:

  1. Опи­сы­ва­ем в виде пере­мен­ных всё, что есть в задаче.
  2. Выяс­ня­ем, что все­го в «Игре пре­сто­лов» 8 сезонов.
  3. Счи­та­ем, сколь­ко будет сто­ить про­смотр всех сезонов.
  4. В цик­ле от 1 до 7 рабо­чих дней про­ве­ря­ем по оче­ре­ди, сколь­ко денег Андрей сэко­но­мит с таким режи­мом работы.
  5. В этом же цик­ле посто­ян­но смот­рим, набра­лась нуж­ная сум­ма или нет.
  6. В любом слу­чае каж­дый раз выво­дим сооб­ще­ние, полу­чит­ся Андрею посмот­реть сери­ал или нет.

Запи­шем это в виде кода на Python:

# расстояние до работы
dist = 10
# расход бензина на сотню
consumption = 11
# цена за литр
gas_cost = 45
# сколько недель надо сидеть Андрею дома
weeks = 4
# количество сезонов в Игре престолов
seasons = 8
# цена подписки на один сезон
season_cost = 300
# количество рабочих дней в неделю (8 не входит в эти границы)
days = range(1,8)
# считаем, сколько стоят все сезоны сериала
full_cost = seasons * season_cost
# по очереди меняем количество рабочих дней и смотрим, что получится
for work_day in days:
# считаем, сколько денег Андрей сэкономит в зависимости от количества рабочих дней
# умножаем на 2, потому что дорога на работу и обратно
# делим на сто, потому что у нас расход в литрах на сто километров
# потом умножаем на расход, чтобы получить потраченные литры
# затем умножаем на стоимость за литр
# ещё умножаем на количество рабочих дней в неделю, в которые Андрей ездил бы на работу
# а в конце умножаем на количество таких недель
economy = ((dist * 2 ) / 100) * consumption * gas_cost * work_day * weeks
# сравниваем сэкономленные деньги с ценой всех сезонов
if economy >= full_cost:
# если сэкономленных денег хватит, Андрюха молодец
print('Если Андрей работал ',work_day,' д. в неделю, то сэкономленных денег хватит на весь сериал')
else:
# если сэкономленных денег не хватит на просмотр всех сезонов, то так и пишем
print('Если Андрей работал ',work_day,' д. в неделю, то на весь сериал денег не хватит')

Резуль­тат рабо­ты про­грам­мы. Полу­ча­ет­ся, что Андрей дол­жен был рабо­тать без выход­ных, что­бы за сто­и­мость сэко­ном­лен­но­го бен­зи­на мож­но было посмот­реть все серии. Но зачем так работать? 

Сила про­грам­ми­ро­ва­ния имен­но в этом: пору­чить ком­пью­те­ру нуд­ную рабо­ту и дождать­ся, пока он выдаст все резуль­та­ты. Нам оста­ёт­ся толь­ко выбрать из них тот, что нам нужен. Класс.

Домаш­нее зада­ние: попро­буй­те решить услож­нён­ную зада­чу, когда цена на бен­зин рас­тёт каж­дый день на 2%.