Прямое построение алгоритма, сравнение и ветвления

Превращение «формулы» в алгоритм

На этом этапе речь идёт о задачах, в которых не нужно повторять действия.

  1. Определиться с постановкой задачи. Что дано, что требуется найти, каковы дополнительные требования?
  2. Решить задачу вручную (это можно сделать за адекватное число шагов)
    • Разложить решение на отдельные действия с какими-либо объектами

  3. Записать действия на наиболее знакомом вам языке

    • Скорее всего — по-русски!
    • Не записывать можно только при условии, что вы способны наизусть повторить эти действия слово-в-слово

  4. Подумать над моделированием данных реального мира с помощью типов данных Python

    • Что нужно ввести, что нужно вывести?
    • Какие промежуточные данные потребуется вычислить?
  5. Превратить придуманные вами действия в последовательность порождения и преобразования данных

    • Какое действие за каким следует
  6. Попытаться однозначно перевести каждое действие на Python

    • Обратите внимание на то, что лишних слов в формулировке не бывает!

    • Про каждое слово в вашей формулировке задайте себе вопрос «а что оно значит» — наверняка вам придётся отражать это в программе

На примере задачи с электронными часами

Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.

  1. Дано произвольное натуральное число — количество минут, прошедших с полуночи некоторого дня. Возможно, это было не сегодня, а один или несколько дней назад. Нужно узнать, который час и сколько минут показывают часы. Формат часов — 24-часовой.
  2. Отбрасываем из n все полные дни. Остаются минуты, прошедшие за сегодня. Считаем в них количество полных часов, а остаток — минуты.

  3. Действия:
    • Количество минут за сегодня — остаток от деления n на количество минут в сутках

    • Количество часов за сегодня — целая часть от деления количества минут за сегодня на 60, а минуты — остаток от деления того же числа на 60
  4. Все числа целые, надо использовать целочисленное деление. Нам понадобится промежуточное значение — количество минут за сегодня, назовём его t

  5. Решение на русском (более формализованные действия):
    • Вводим n

    • t — остаток от деления n на 60 * 24 (минут в сутках)

    • h часов — целая часть от деления t на 60

    • m минут — остаток от деления t на 60

    • Выводим через пробел n и m

  6. Решение на Python:
    Подсветка не поддерживается для синтаксиса «Python», см. список поддерживаемых синтаксисов для подсветки на странице ПомощьПоПарсерам.
       1 n = int(input())      # Вводим `n`
       2 t = n % (60 * 24)     # `t` — остаток от деления `n` на `60 * 24` (минут в сутках)
       3 h = t // 60           # `h` часов — целая часть от деления `t` на `60`
       4 m = t % 60            # `m` минут — остаток от деления `t` на `60`
       5 print(h, m)           # Выводим через пробел `n` и `m`
    

Замечания:

⇒ 1

Не бывает «единственно правильного решения»: критерий правильности не в самой программе, а в том, что на всех входных данных она должна давать правильный ответ

  • Например, вот это тоже решение:
       1 t = int(input())%1440
       2 print(t // 60, t % 60)
    
  • И это тоже ☺ (не пытайтесь разобраться, это может быть вредно для здоровья☺):
       1 (lambda t: print(t // 60, t % 60))(int(input())%1440)
    
⇒ 2

Среди всех правильных решений предпочтительно то, которое легче понять!