Python: counter

Feb 19, 2014 22:05

Написал сегодня ещё одну бесполезную, но познавательную программку.. Называется Counter и является действительно реализацией счётчика вида "00.000.0", то есть состоящего из групп, разделённых точками. Первичное написание счётчика является шаблоном, которому счётчик будет соответствовать при увеличении. То есть в вышеприведённом примере это три группы чисел, во всех трёх отсчёт начинаются с нуля. Первая состоит из двух символов, вторая - из трёх, третья - из одного. Варианты могут быть какими угодно, например:
12345.77
90
09.000.67.5543.21
При вызове метода "увеличить счётчик" последняя группа увеличивается на единицу. Если это невозможно, так как шаблон заполнен (то есть, например, шаблон - два символа, значит, 99 - доступный максимум), эта группа обнулится, а более старшая (левая :)) увеличится на единицу. Если невозможно увеличить ни одну, то будет возвращена ошибка.
Также есть метод, позволяющий "зафиксировать" увеличение группы, то есть после его применения фокус смещается к следующей слева группе. Например, у нас есть шаблон 1.22.93. Мы хотим увеличить вторую группу. Вызываем "фиксирующий" метод, затем вызываем основной - и в результате получаем 1.23.93.
Также предусмотрена возможность создавать "свободные" шаблоны, то есть шаблон группы без верхнего ограничения. Для этого надо перед группой добавить символ "!". Например:
12.!09.000
Третья группа может принимать значения от 000 до 999, а вторая группа будет принимать значения от 09 до бесконечности - пока её не "зафиксируем", счётчик будет увеличиваться.

Программка лежит тут.

PS: на всякий случай подчеркну, что программа является МОДУЛЕМ, то есть заточена под вызов из другой программы, а интерактивный код там всего лишь для демонстрации возможностей. Предполагается, что такой модуль можно использовать для простой реализации чего-то вроде счётчика версий в системе документооборота и т.д.
Previous post Next post
Up