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

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

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

Решение

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

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

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

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

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

    
language: 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%.