понедельник, 25 декабря 2017 г.

Паттерны построения пользовательского интерфейса

Не все, что описано в этих статьях, сразу станет понятно.  Но пробовать понять нужно.

Паттерны для новичков: MVC vs MVP vs MVVM

Паттерн MVC на примере Cапера

Структурные паттерны проектирования в Python

Паттерны проектирования

Создание графических приложений. События

События

В системе современного графического интерфейса имеется возможность отслеживать различные события, связанные с клавиатурой и мышью, и происходящие на «территории» того или иного виджета. В Tk события описываются в виде текстовой строки — шаблона события, состоящего из трех элементов (модификаторы, тип события и детализация события).
Тип события Содержание события
Activate Активизация окна
ButtonPress Нажатие кнопки мыши
ButtonRelease Отжатие кнопки мыши
Deactivate Деактивация окна
Destroy Закрытие окна
Enter Вхождение курсора в пределы виджета
FocusIn Получение фокуса окном
FocusOut Потеря фокуса окном
KeyPress Нажатие клавиши на клавиатуре
KeyRelease Отжатие клавиши на клавиатуре
Leave Выход курсора за пределы виджета
Motion Движение мыши в пределах виджета
MouseWheel Прокрутка колесика мыши
Reparent Изменение родителя окна
Visibility Изменение видимости окна
Примеры описаний событий строками и некоторые названия клавиш приведены ниже:
"" или просто "<3>" — щелчок правой кнопки мыши (то есть, третьей, если считать на трехкнопочной мыши слева–направо). "" — двойной щелчок мышью (левой кнопкой) с нажатой кнопкой Shift. В качестве модификаторов могут быть использованы следующие (список неполный):
Control, Shift, Lock,
Button1Button5 или B1B5,
Meta, Alt, Double, Triple.
Просто символ обозначает событие — нажатие клавиши. Например, «k» — тоже, что "". Для неалфавитно–цифровых клавиш есть специальные названия:
Cancel, BackSpace, Tab, Return, Shift_L, Control_L, Alt_L,
Pause, Caps_Lock, Escape, Prior, Next, End, Home, Left,
Up, Right, Down, Print, Insert, Delete, F1, F2, F3, F4, F5, F6, F7,
F8, F9, F10, F11, F12, Num_Lock, Scroll_Lock, space, less
Здесь обозначает пробел, а  — знак меньше. , , ,  — стрелки. ,  — это PageUp и PageDown. Остальные клавиши более или менее соответствуют надписям на стандартной клавиатуре.
Примечание: Следует заметить, что Shift_L, в отличие от Shift, нельзя использовать как модификатор.
В конкретной среде комбинации, означающие что–то особенное в системе, могут не дойти до графического приложения. Например, известный всем Ctrl–Alt–Del.
Следующая программа позволяет печатать направляемые виджету события, в частности — keysym, а также анализировать, как различные клавиши можно представить в шаблоне события:
from Tkinter import *
tk = Tk()      # основное окно приложения
txt = Text(tk) # текстовый виджет, принадлежащий окну tk
txt.pack()     # располагается менеджером pack

# функция обработки события
def event_info(event):
 txt.delete("1.0", END) # удаляется с начала до конца текста
 for k in dir(event):   # цикл по атрибутам события
  if k[0] != "_":       # берутся только неслужебные атрибуты
   # готовится описание атрибута события
   ev = "%15s: %s\n" % (k, repr(getattr(event, k)))
   txt.insert(END, ev)  # добавляется в конец текста

# привязывается виджету txt функция event_info для обработки событий,
# соответствующих шаблону
txt.bind("", event_info)
tk.mainloop() # главный цикл обработки событий
При нажатии клавиши Esc в окне можно увидеть примерно следующее:
      char: '\x1b'
     delta: 9
    height: 0
   keycode: 9
    keysym: 'Escape'
keysym_num: 65307
       num: 9
send_event: False
    serial: 159
     state: 0
      time: -1072960858
      type: '2'
    widget:
     width: 0
         x: 83
    x_root: 448
         y: 44
    y_root: 306
Следует объяснить некоторые из этих атрибутов:
• char Нажатый символ (для некоторых событий — ??)
• height, width Высота и ширина.
• focus Был ли в момент события фокус у окна?
• keycode Код символа (скан–код клавиатуры).
• keysym Символическое имя клавиши.
• serial Серийный номер события. Увеличивается по мере возникновения событий.
• time Время возникновения события. Все время увеличивается.
• widget Виджет, в котором возникло событие.
• x, y Координаты указателя в виджете во время события.
• x_root, y_root Координаты указателя на экране во время события.
В принципе, совсем необязательно, чтобы события обрабатывал тот же виджет, который их первично принял. Например, можно перенаправить все события внутри подчиненных виджетов на данный виджет с помощью метода grab_set() (grab_release() освобождает виджет от этой обязанности). В Tk существуют и другие возможности управления событиями, которые можно изучить по документации.

вторник, 19 декабря 2017 г.

Ресуры для начинающих программистов

Чем заняться после работы: языки и среды программирования для самых маленьких

Тест: насколько хорошо вы разбираетесь в Python?

Подборка книг о языке Python для программистов любого уровня

Где искать ответы на свои вопросы: 10 лучших ресурсов с ответами на программистские «почему» и «как»

10 полезных ресурсов для обучения Python

Самоучитель Python




Шифрование и криптография в Python

Ссылки на ресурсы про реализацию криптографических алгоритмов на языке Python:
Криптография для самых маленьких: шифрование с примерами на Python
10 популярных кодов и шифров
Взламываем шифры с Python
Шифрование и криптография в Python
Python Cryptography Toolkit
Материалы по криптографии
python / Безопасность и криптография

Построение сценария игры с помощью карт Проппа

На занятиях я говорил о картах Проппа, как методе составления сценария сказки или игры.
Фольклорист Владимир Яковлевич Пропп подробно изучал сказки народов мира, анализировал сотни сюжетов и выделил 31 функциональный элемент, без которых не обходится ни одно сказочное произведение. Не обязательно, что они все вместе будут присутствовать в сказке, иногда нарушается их последовательность, но идея, содержание сказки при этом не страдают.
Дж. Родари сократил число этих функций до 20:
  1.  запрет или предписание;
  2. нарушение;
  3. вредительство; 
  4. отъезд героя;
  5. задача;
  6. встреча с дарителем;
  7. волшебные дары;
  8. появление героя;
  9. сверхъестественные свойства антигероя;
  10. борьба;
  11. победа;
  12. возвращение домой;
  13. прибытие домой;
  14. ложный герой;
  15. трудные испытания;
  16. ликвидация беды;
  17. узнавание героя;
  18. изобличение ложного героя; 
  19. наказание ложного героя; 
  20. Свадьба или счастливый конец.
Все функциональные элементы в реальном сценарии определяются конкретным образом, например, могут быть выбраны из списка возможных реализаций. даже небольшое количество вариантов для каждого элемента дает огромное множество сценариев.
Здесь приведен список основных мотивов, выделенных исследователем Проппом с вариантами их реализаций:
1. Жили-были. Создаем сказочное пространство. (Каждая сказка начинается с вводных слов "давным-давно", "жили-были", "в тридесятом царстве").
2. Особое обстоятельство ("умер отец", "солнце исчезло с небосклона", "дожди перестали лить, и наступила засуха").
3. Запрет ("не открывай оконца", "не отлучайся со двора", "не пей водицы").
4. Нарушение запрета (персонажи сказок и в оконце выглядывают, и со двора отлучаются, и из лужи водицу пьют; при этом в сказке появляется новое лицо — антагонист, вредитель).
5. Герой покидает дом (при этом герой может либо отправляться, отсылаться из дома, скажем, с благословения родителей разыскивать сестренку, либо изгоняться, например, отец увозит изгнанную мачехой дочь в лес, либо уходить из дома, превратившись в козлика после того, как запрет нарушен).
6. Появление друга-помощника (серый волк, кот в сапогах).
7. Способ достижения цели (это может быть полет на ковре-самолете, использование меча-кладенца и т.п.).
8. Враг начинает действовать (змей похищает царевну, колдунья отравляет яблоко).
9. Одержание победы (разрушение злых чар, физическое уничтожение антагониста — Змея, Кощея Бессмертного, победа в состязании).
10. Преследование (какая сказка, как и детектив, обходится без погони? Героев могут преследовать гуси-лебеди, Змей Горыныч, Баба-яга, Лихо Окаянное и прочие, не менее "симпатичные" персонажи).
11. Герой спасается от преследования (прячась в печку, превращаясь в кого-то или с помощью волшебных средств и преодолевая огромные расстояния).
12. Даритель испытывает героя. И тут появляется новый персонаж – волшебник, гном, старушка, которой нужна помощь или нищий. Баба-яга дает девушке задание выполнить домашнюю работу, Змей предлагает герою поднять тяжелый камень.
13. Герой выдерживает испытание дарителя (все очевидно).
14. Получение волшебного средства (оно может передаваться, изготовляться, покупаться, появляться неведомо откуда, похищаться, даваться дарителем).
15. Отлучка дарителя (Баба яга отпускает с миром, волшебник исчезает, дракон прячется обратно в пещеру).
16. Герой вступает в битву с врагом (иногда это открытый бой - со Змеем Горынычем, иногда состязание или игра в карты).
17. Враг оказывается поверженным (в сказках антагониста не только побеждают в бою или состязании, но и изгоняют или уничтожают с помощью хитрости).
18. Героя метят (метку наносят на тело или дают особый предмет - кольцо, полотенце, образок, он что-то забирает у поверженного врага).
19. Герою дают сложное задание (достать перстень со дна моря; соткать ковер; построить дворец за одну ночь; принести то, не знаю что). 20. Герой исполняет задание (а как же иначе?).
21. Герою дается новый облик (частый прием -погружение в кипящую воду или горячее молоко, которое делает героя еще краше).
22. Герой возвращается домой (обычно это происходит в тех же формах, что и прибытие, но это может быть и победный прилет на поверженном драконе).
23. Героя не узнают дома (иногда вследствие произошедших с ним внешних изменений, наведенного заклятья, увечья, взросления).
24. Появляется ложный герой (то есть тот, кто выдает себя за героя или присваивает себе его заслуги).
25. Разоблачение ложного героя (это может произойти в результате специальных испытаний или свидетельства авторитетных лиц). 26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с позором изгоняется, а нашего персонажа принимает в объятия любящая королевская чета)
27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу). 28. Мораль (какой вывод можно сделать из случившейся истории).
Если вы занимаетесь с детьми, то детям карты Проппа помогут хорошо запомнить сказку и облегчат её пересказ. А ВАМ САМИМ,МАМОЧКИ,ИСПОЛЬЗУЮ ДАННУЮ СХЕМУ МОЖНО СОЧИНИТЬ СКАЗКУ ПРО СВОЕГО МАЛЫША!!! Здесь мы приводим список основных мотивов, выделенных исследователем Проппом: 1. Жили-были. Создаем сказочное пространство. (Каждая сказка начинается с вводных слов "давным-давно", "жили-были", "в тридесятом царстве"). 2. Особое обстоятельство ("умер отец", "солнце исчезло с небосклона", "дожди перестали лить, и наступила засуха"). 3. Запрет ("не открывай оконца", "не отлучайся со двора", "не пей водицы"). 4. Нарушение запрета (персонажи сказок и в оконце выглядывают, и со двора отлучаются, и из лужи водицу пьют; при этом в сказке появляется новое лицо — антагонист, вредитель). 5. Герой покидает дом (при этом герой может либо отправляться, отсылаться из дома, скажем, с благословения родителей разыскивать сестренку, либо изгоняться, например, отец увозит изгнанную мачехой дочь в лес, либо уходить из дома, превратившись в козлика после того, как запрет нарушен). 6. Появление друга-помощника (серый волк, кот в сапогах). 7. Способ достижения цели (это может быть полет на ковре-самолете, использование меча-кладенца и т.п.). 8. Враг начинает действовать (змей похищает царевну, колдунья отравляет яблоко). 9. Одержание победы (разрушение злых чар, физическое уничтожение антагониста — Змея, Кощея Бессмертного, победа в состязании). 10. Преследование (какая сказка, как и детектив, обходится без погони? Героев могут преследовать гуси-лебеди, Змей Горыныч, Баба-яга, Лихо Окаянное и прочие, не менее "симпатичные" персонажи). 11. Герой спасается от преследования (прячась в печку, превращаясь в кого-то или с помощью волшебных средств и преодолевая огромные расстояния). 12. Даритель испытывает героя. И тут появляется новый персонаж – волшебник, гном, старушка, которой нужна помощь или нищий. Баба-яга дает девушке задание выполнить домашнюю работу, Змей предлагает герою поднять тяжелый камень. 13. Герой выдерживает испытание дарителя (все очевидно). 14. Получение волшебного средства (оно может передаваться, изготовляться, покупаться, появляться неведомо откуда, похищаться, даваться дарителем). 15. Отлучка дарителя (Баба яга отпускает с миром, волшебник исчезает, дракон прячется обратно в пещеру). 16. Герой вступает в битву с врагом (иногда это открытый бой - со Змеем Горынычем, иногда состязание или игра в карты). 17. Враг оказывается поверженным (в сказках антагониста не только побеждают в бою или состязании, но и изгоняют или уничтожают с помощью хитрости). 18. Героя метят (метку наносят на тело или дают особый предмет - кольцо, полотенце, образок, он что-то забирает у поверженного врага). 19. Герою дают сложное задание (достать перстень со дна моря; соткать ковер; построить дворец за одну ночь; принести то, не знаю что). 20. Герой исполняет задание (а как же иначе?). 21. Герою дается новый облик (частый прием -погружение в кипящую воду или горячее молоко, которое делает героя еще краше). 22. Герой возвращается домой (обычно это происходит в тех же формах, что и прибытие, но это может быть и победный прилет на поверженном драконе). 23. Героя не узнают дома (иногда вследствие произошедших с ним внешних изменений, наведенного заклятья, увечья, взросления). 24. Появляется ложный герой (то есть тот, кто выдает себя за героя или присваивает себе его заслуги). 25. Разоблачение ложного героя (это может произойти в результате специальных испытаний или свидетельства авторитетных лиц). 26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с позором изгоняется, а нашего персонажа принимает в объятия любящая королевская чета) 27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу). 28. Мораль (какой вывод можно сделать из случившейся истории).
Если вы занимаетесь с детьми, то детям карты Проппа помогут хорошо запомнить сказку и облегчат её пересказ. А ВАМ САМИМ,МАМОЧКИ,ИСПОЛЬЗУЮ ДАННУЮ СХЕМУ МОЖНО СОЧИНИТЬ СКАЗКУ ПРО СВОЕГО МАЛЫША!!! Здесь мы приводим список основных мотивов, выделенных исследователем Проппом: 1. Жили-были. Создаем сказочное пространство. (Каждая сказка начинается с вводных слов "давным-давно", "жили-были", "в тридесятом царстве"). 2. Особое обстоятельство ("умер отец", "солнце исчезло с небосклона", "дожди перестали лить, и наступила засуха"). 3. Запрет ("не открывай оконца", "не отлучайся со двора", "не пей водицы"). 4. Нарушение запрета (персонажи сказок и в оконце выглядывают, и со двора отлучаются, и из лужи водицу пьют; при этом в сказке появляется новое лицо — антагонист, вредитель). 5. Герой покидает дом (при этом герой может либо отправляться, отсылаться из дома, скажем, с благословения родителей разыскивать сестренку, либо изгоняться, например, отец увозит изгнанную мачехой дочь в лес, либо уходить из дома, превратившись в козлика после того, как запрет нарушен). 6. Появление друга-помощника (серый волк, кот в сапогах). 7. Способ достижения цели (это может быть полет на ковре-самолете, использование меча-кладенца и т.п.). 8. Враг начинает действовать (змей похищает царевну, колдунья отравляет яблоко). 9. Одержание победы (разрушение злых чар, физическое уничтожение антагониста — Змея, Кощея Бессмертного, победа в состязании). 10. Преследование (какая сказка, как и детектив, обходится без погони? Героев могут преследовать гуси-лебеди, Змей Горыныч, Баба-яга, Лихо Окаянное и прочие, не менее "симпатичные" персонажи). 11. Герой спасается от преследования (прячась в печку, превращаясь в кого-то или с помощью волшебных средств и преодолевая огромные расстояния). 12. Даритель испытывает героя. И тут появляется новый персонаж – волшебник, гном, старушка, которой нужна помощь или нищий. Баба-яга дает девушке задание выполнить домашнюю работу, Змей предлагает герою поднять тяжелый камень. 13. Герой выдерживает испытание дарителя (все очевидно). 14. Получение волшебного средства (оно может передаваться, изготовляться, покупаться, появляться неведомо откуда, похищаться, даваться дарителем). 15. Отлучка дарителя (Баба яга отпускает с миром, волшебник исчезает, дракон прячется обратно в пещеру). 16. Герой вступает в битву с врагом (иногда это открытый бой - со Змеем Горынычем, иногда состязание или игра в карты). 17. Враг оказывается поверженным (в сказках антагониста не только побеждают в бою или состязании, но и изгоняют или уничтожают с помощью хитрости). 18. Героя метят (метку наносят на тело или дают особый предмет - кольцо, полотенце, образок, он что-то забирает у поверженного врага). 19. Герою дают сложное задание (достать перстень со дна моря; соткать ковер; построить дворец за одну ночь; принести то, не знаю что). 20. Герой исполняет задание (а как же иначе?). 21. Герою дается новый облик (частый прием -погружение в кипящую воду или горячее молоко, которое делает героя еще краше). 22. Герой возвращается домой (обычно это происходит в тех же формах, что и прибытие, но это может быть и победный прилет на поверженном драконе). 23. Героя не узнают дома (иногда вследствие произошедших с ним внешних изменений, наведенного заклятья, увечья, взросления). 24. Появляется ложный герой (то есть тот, кто выдает себя за героя или присваивает себе его заслуги). 25. Разоблачение ложного героя (это может произойти в результате специальных испытаний или свидетельства авторитетных лиц). 26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с позором изгоняется, а нашего персонажа принимает в объятия любящая королевская чета) 27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу). 28. Мораль (какой вывод можно сделать из случившейся истории).

понедельник, 18 декабря 2017 г.

Библиотека для построения экспертной системы

PyKnow - библиотека Python для разработки экспертных систем, реализующая подход CLIPS.
 Реализует продукционный подход к построению экспертной системы.
Пример экспертной системы
PROSPECTOR изнутри
Программирование на языке CLIPS
CLIPS примеры программ
Игровые стратегии и экспертная система

Продукционная модель представления знаний  модель, основанная на правилах, позволяет представить знание в виде предложений типа «Если (условие), то (действие)».
Продукционная модель — фрагменты Семантической сети, основанные на временных отношениях между состояниями объектов.
Продукционная модель обладает тем недостатком, что при накоплении достаточно большого числа (порядка нескольких сотен) продукций они начинают вследствие необратимости дизъюнкций противоречить друг другу. В этом случае разработчики начинают усложнять систему, включая в неё модули нечёткого вывода или иные средства разрешения конфликтов, — правила по приоритету, правила по глубине, эвристические механизмы исключений, возврата и т. п.

Реализация логического вывода использует алгоритм Rete.
Rete — эффективный алгоритм сопоставления с образцом для продукционных систем, экспертных систем и баз знаний, созданный Чарльзом Форги из Университета Карнеги Меллона. Впервые был описан в рабочем документе 1974 года, затем в докторской диссертации 1979 и в статье 1982 года (см Ссылки).
Rete стал основой многих популярных экспертных систем, включая CLIPS, Jess, Drools, BizTalk Rules Engine и Soar.
При наивной реализации экспертная система проверяет применимость каждого правила вывода к каждому факту базы знаний, при необходимости выполняет его и переходит к следующему правилу, возвращаясь в начало при исчерпании всех правил. Даже для небольшого набора правил и фактов такой метод работает неприемлемо медленно. Алгоритм Rete обеспечивает более высокую эффективность. При использовании Rete экспертная система строит специальный граф или префиксное дерево, узлам которого соответствуют части условий правил. Путь от корня до листа образует полное условие некоторой продукции. В процессе работы каждый узел хранит список фактов, соответствующих условию. При добавлении или модификации факта он прогоняется по сети, при этом отмечаются узлы, условиям которых данный факт соответствует. При выполнении полного условия правила, когда система достигает листа графа, правило выполняется.

Шпаргалка программиста






Выучить и всегда использовать эту рекомендацию.
Электронная таблица, подобная листу Excel, созданная средствами Tkinter. Для тех, кто занимается вопросом автоматической генерации пользовательского интерфейса полезно посмотреть, как сложный графический элемент SpreadSheet (Электронная таблица) заполняет себя графическими элементами Cell и Label.
A simple GUI spreadsheet in less than 100 lines of Python

четверг, 14 декабря 2017 г.

Составление расписаний

 Составление расписаний

В настоящее время несколько человек предполагают  развивать проекты, связанные с составлением расписаний. Вот некоторые ссылки в помощь:

Как при помощи Excel автоматизировать процесс составления расписания занятий в учебном заведении
Пример программы составления расписания

Средства составления расписаний для учебного процесса
Определены требования к программе для составления расписания

Методические рекомендации к составлению расписания учебных занятий для общеобразовательных учреждений
Оцените сложность задачи и ужаснитесь ей.

Программа по составлению расписания занятий в ВУЗе
Пример программы. Интересен как пример пользовательского интерфейса.

Проблемы автоматизированного составления расписания занятий средней образовательной школы
Анализ проблемы составления расписаний занятий в ВУЗе
Можно использовать для определнения актуальности задачи

Использование возможностей программы Excel для оптимизации работы заместителя директора по УВР







Программирование в ограничениях

Использование подходов и алгоритмов искусственного интеллекта (ИИ) позволяет решать многие прикладные задачи, такие, как задачи теории расписаний, задачи проектирования экспертных систем и систем поддержки принятия решений, доказательство теорем, задачи тестирования электронных схем, обработка изображений. Одной из важных задач ИИ является задача удовлетворения ограничений (УО) (constraint satisfaction problem).
Теория УО предлагает удобный аппарат и простую формальную схему для представления и решения комбинаторных задач искусственного интеллекта. Целью решения задачи УО является нахождение значений переменных, удовлетворяющих определенным ограничениям.

Удовлетворение ограничений и программирование в ограничениях

Программирование в ограничениях и недоопределенные модели

Объектно-ориентированное программирование в ограничениях




среда, 13 декабря 2017 г.

Лабиринт и разработка игр

 Лабиринт

Алгоритм поиска пути в лабиринте и его реализация на Python 3.4

Задача на создание программы для виртуального робота, способного быстро обходить произвольный связный лабиринт с некоторой целью

Алгоритмы генерации лабиринтов

Разработка игр

Делаем первую игру на Python: Поймай шарик

Игра змейка в Tkinter


Как писать Pygame игры на Python

9 идей для начинающих программистов по созданию игр-клонов

Примеры использования онтологий

Примеры использования онтологий

Автоматизация построения приложений для мобильных платформ на базе онтологий

Создание программного инструментария формирования электронных коллекций учебно-методических материалов

Редактор навигационной структуры сайта на основе онтологий

Сервис управления рабочими программами

Интеллектуальная система проектирования веб-приложения

Управление структурой и визуальным отображением системы управления учебным процессом на основе семантической сети.

Интеллектуальная система проектирования веб-приложения


вторник, 21 ноября 2017 г.

Подведение итогов.

Почти три месяца действует объединение "Школа юного программиста". Подведем итоги деятельности. В результате обучения сформирован список проектов, которые разрабатываются участниками объединения:
  1. Справочная система по историческим событиям
  2. Консольный файловый менеджер
  3. Программа для составления расписания
  4. Игра "Крестики и нолики"
  5. Игра "Морской бой"
  6. Программа "Домашняя бухгалтерия"
  7. Программа "Криптография"
  8. Программа "Многоуровневая семантическая модель".
Проекты находятся на разных стадиях разработки. Группы, разрабатывающие проекты, окончательно не сформированы. Но важен сам факт появления проектов. Молодцы, ребята.

понедельник, 20 ноября 2017 г.

Управление строками и списками

Задачи  для проверки знаний
 
Управление строками и списками
1. Дана текстовая строка. Каждую гласную, находящуюся в ней, размножить
в 3 раза..
2. Дана текстовая строка, возможно, содержащая ошибки вида «жы» и
«шы». Заменить их на правильные варианты и добавить после каждой
ошибки восклицательный знак.
3. Дана текстовая строка, возможно, содержащая запятые. Вставить после
каждой запятой или точки слово «однако».
4. Дана текстовая строка, содержащая предложение. Поменять в строке мес-
тами первые два слова и в конце поставить вопросительный знак.
Копирование с условием
5. Дана текстовая строка, возможно, содержащая пробелы. Удалить их из
строки полностью.
6. Дана строка, содержащая текст, части которого могут быть заключены в
скобки. Во вторую строку переписать текст из первой, за исключением
находящегося в скобках.
7. Дана текстовая строка. Записать во вторую строку все буквы, встречаю-
щиеся в первой строке (каждая буква — только 1 раз).
8. Дана текстовая строка. Напечатать, какие буквы в ней встречаются и
сколько раз.

Разработка телефонной книги

Примеры разработки
Телефонная книга + словари
mini phonebook Python app

Категории в телефонной книге
Phonebook, Multiple keys with the same value (Alias)
Multiple keys per value
Multiple keys
multi_key_dict 2.0.3

Использование ООП при разработке телефонной книги
ООП телефонная книга 1
ООП и телефонная книга 2

четверг, 28 сентября 2017 г.

Telegram канал объединения

Для оперативной информации о деятельности детского творческого объединения "Школа юного программиста" создан канал Ntprog (https://t.me/ntprog). Предлагаю участникам объединения и родителям присылать свои сообщения и вопросы.

четверг, 21 сентября 2017 г.

Тема "Списки"

 Основы
Презентация "Списки"
Презентация  "Списковые включения"
Практическая работа Использование списков

Обработка списков
Определяем присутствие всех элементов списка в другом списке
How to Reverse a List in Python
Determining if all Elements in a List are the Same in Python
 

Задания для темы "Функции"

  1. Создать  функцию, преобразующую  список в словарь, где  ключом  является  элемент списка  с  указанным  номером .
  2. Создать функцию, принимающую  в качестве параметров  список списков  и  индекс,  сортирующую внутренние списки по  элементу с указанным индексом.
  3. Создать функцию, разбивающую  текстовую строку на  части по указанному разделителю (например, пробел, символ табуляции  и т.п.) и возвращающую список,  каждым элементом которого  является  отдельная часть строки.
  4. Создать функцию,  открывающую текстовый  файл и преобразующую его содержимое в  список, где элементами   списка являются строки  текстового файла.
  5. Создать функцию,  открывающую текстовый  файл, разбивающую  каждую строку  файла на части  и преобразующую его содержимое в  список, где элементами   списка являются  списки,  содержащие  элементы  текстовых строк, строки  текстового файла.

Функции. Посчитать количества одинаковых элементов в списке

Функции. Посчитать количества одинаковых элементов в списке

Тема: Функции 
Дан список целых чисел. Посчитать, сколько раз в нем встречается каждое число. Например, если дан список [1, 1, 3, 2, 1, 3, 4], то в нем число 1 встречается три раза, число 3 - два раза, числа 2 и 4 - по одному разу.
Для хранения количества каждого встречающегося в списке значения создадим словарь. В нем ключами будут числа, которое встречается в списке, а значениями - количества этих чисел в списке. Для примера, приведенного выше, в итоге должен был бы получиться такой словарь: {1:3, 3:2, 2:1, 4:1}.
Пусть в программе будет функция, которая заполняет список случайными числами в диапазоне и количестве, указанными пользователем.
Другая функция будет считать количество каждого значения и заносить данные в словарь. Алгоритм подсчета заключается в следующем. Если очередной элемент списка уже есть в качестве ключа словаря, то следует увеличить значение этого ключа на единицу. Если очередного элемента списка нет в качестве ключа в словаре, то такой ключ следует добавить и присвоить ему значение, равное единице.
Для того, чтобы вывести содержимое словаря в отсортированном по возрастанию ключей виде, используется функция sorted(). Она сортирует ключи словаря.

lst = []
dct = {}
def make_list(minumum, maximum, qty):
    from random import random
    for i in range(qty):
        lst.append(int(random()*(maximum-minumum+1))+minumum)
 
def analysis():
    for i in lst:
        if i in dct:
            dct[i] += 1
        else:
            dct[i] = 1  
 
mn = int(input('Минимум: '))
mx = int(input('Максимум: '))
qty = int(input('Количество элементов: '))
make_list(mn,mx,qty)
analysis()
for i in sorted(dct):
    print("'%d':%d" % (i,dct[i])
 
Пример выполнения:
Минимум: -10
Максимум: 10
Количество элементов: 20
'-8':1
'-7':2
'-6':1
'-5':1
'-3':3
'-1':1
'0':4
'4':1
'5':2
'7':2
'8':1
'10':1

среда, 20 сентября 2017 г.

Программа вычисления общей суммы покупок

Программа вычисления общей суммы покупок.
Модуль pr1.py
Модуль lib1.py

Задание:
  1. изучить процесс установки программы pip.
  2. установить программу pip
  3. установить библиотеку easygui любым доступным способом 
  4. изменить программу таким образом, что бы сообщения в окнах соответствовали смыслу выполняемой операции.
  5. изучить создание и использовании в языке Python  структуры данных "список" (list).
  6. предложить варианты использования списка в программе

Анализ кода

Профилирование и отладка Python Профилирование и отладка Python, переходим к практике Профилирование и отладка Python, инструменты Профил...