Про качества, желательные у программиста
Очки системного мышления и Гарри Поттер
вторник, 26 декабря 2017 г.
понедельник, 25 декабря 2017 г.
Паттерны построения пользовательского интерфейса
Не все, что описано в этих статьях, сразу станет понятно. Но пробовать понять нужно.
Паттерны для новичков: MVC vs MVP vs MVVM
Паттерн MVC на примере Cапера
Структурные паттерны проектирования в Python
Паттерны проектирования
Паттерны для новичков: 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>"3>
— щелчок правой кнопки мыши (то есть, третьей, если считать на трехкнопочной мыши слева–направо). ""
— двойной щелчок мышью (левой кнопкой) с нажатой кнопкой Shift. В
качестве модификаторов могут быть использованы следующие (список
неполный):Control
, Shift
, Lock
,Button1
–Button5
или B1
–B5
,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 для программистов любого уровня
Где искать ответы на свои вопросы: 10 лучших ресурсов с ответами на программистские «почему» и «как»
10 полезных ресурсов для обучения Python
Самоучитель Python
Шифрование и криптография в Python
Ссылки на ресурсы про реализацию криптографических алгоритмов на языке Python:
Криптография для самых маленьких: шифрование с примерами на Python
10 популярных кодов и шифров
Взламываем шифры с Python
Шифрование и криптография в Python
Python Cryptography Toolkit
Материалы по криптографии
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. Герой исполняет задание (а как же иначе?).
21. Герою дается новый облик (частый прием -погружение в кипящую воду или горячее молоко, которое делает героя еще краше).
22. Герой возвращается домой (обычно это происходит в тех же формах, что и прибытие, но это может быть и победный прилет на поверженном драконе).
23. Героя не узнают дома (иногда вследствие произошедших с ним внешних изменений, наведенного заклятья, увечья, взросления).
24. Появляется ложный герой (то есть тот, кто выдает себя за героя или присваивает себе его заслуги).
25. Разоблачение ложного героя (это может произойти в результате специальных испытаний или свидетельства авторитетных лиц). 26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с позором изгоняется, а нашего персонажа принимает в объятия любящая королевская чета)
27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу). 28. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
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. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
Если вы занимаетесь с
детьми, то детям карты Проппа помогут хорошо запомнить сказку и облегчат
её пересказ.
А ВАМ САМИМ,МАМОЧКИ,ИСПОЛЬЗУЮ ДАННУЮ СХЕМУ МОЖНО СОЧИНИТЬ СКАЗКУ ПРО
СВОЕГО МАЛЫША!!!
Здесь мы приводим список основных мотивов, выделенных исследователем
Проппом:
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. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
Если вы занимаетесь с
детьми, то детям карты Проппа помогут хорошо запомнить сказку и облегчат
её пересказ.
А ВАМ САМИМ,МАМОЧКИ,ИСПОЛЬЗУЮ ДАННУЮ СХЕМУ МОЖНО СОЧИНИТЬ СКАЗКУ ПРО
СВОЕГО МАЛЫША!!!
Здесь мы приводим список основных мотивов, выделенных исследователем
Проппом:
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. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
понедельник, 18 декабря 2017 г.
Библиотека для построения экспертной системы
PyKnow - библиотека Python для разработки экспертных систем, реализующая подход CLIPS.
Реализует продукционный подход к построению экспертной системы.
Пример экспертной системы
PROSPECTOR изнутри
Программирование на языке CLIPS
CLIPS примеры программ
Игровые стратегии и экспертная система
Продукционная модель представления знаний модель, основанная на правилах, позволяет представить знание в виде предложений типа «Если (условие), то (действие)».
Продукционная модель — фрагменты Семантической сети, основанные на временных отношениях между состояниями объектов.
Продукционная модель обладает тем недостатком, что при накоплении достаточно большого числа (порядка нескольких сотен) продукций они начинают вследствие необратимости дизъюнкций противоречить друг другу. В этом случае разработчики начинают усложнять систему, включая в неё модули нечёткого вывода или иные средства разрешения конфликтов, — правила по приоритету, правила по глубине, эвристические механизмы исключений, возврата и т. п.
Реализация логического вывода использует алгоритм Rete.
Rete — эффективный алгоритм сопоставления с образцом для продукционных систем, экспертных систем и баз знаний, созданный Чарльзом Форги из Университета Карнеги Меллона. Впервые был описан в рабочем документе 1974 года, затем в докторской диссертации 1979 и в статье 1982 года (см Ссылки).
Rete стал основой многих популярных экспертных систем, включая CLIPS, Jess, Drools, BizTalk Rules Engine и Soar.
При наивной реализации экспертная система проверяет применимость каждого правила вывода к каждому факту базы знаний, при необходимости выполняет его и переходит к следующему правилу, возвращаясь в начало при исчерпании всех правил. Даже для небольшого набора правил и фактов такой метод работает неприемлемо медленно. Алгоритм Rete обеспечивает более высокую эффективность. При использовании Rete экспертная система строит специальный граф или префиксное дерево, узлам которого соответствуют части условий правил. Путь от корня до листа образует полное условие некоторой продукции. В процессе работы каждый узел хранит список фактов, соответствующих условию. При добавлении или модификации факта он прогоняется по сети, при этом отмечаются узлы, условиям которых данный факт соответствует. При выполнении полного условия правила, когда система достигает листа графа, правило выполняется.
Реализует продукционный подход к построению экспертной системы.
Пример экспертной системы
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
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 идей для начинающих программистов по созданию игр-клонов
Примеры использования онтологий
Примеры использования онтологий
Автоматизация построения приложений для мобильных платформ на базе онтологийСоздание программного инструментария формирования электронных коллекций учебно-методических материалов
Редактор навигационной структуры сайта на основе онтологий
Сервис управления рабочими программами
Интеллектуальная система проектирования веб-приложения
Управление структурой и визуальным отображением системы управления учебным процессом на основе семантической сети.
Интеллектуальная система проектирования веб-приложения
понедельник, 11 декабря 2017 г.
Библиотека для логического программирования в Python
Библиотека для логического программирования в Python Pyke
A DSL and Rules Engine for Python
onto.ruleengine
A DSL and Rules Engine for Python
onto.ruleengine
понедельник, 27 ноября 2017 г.
Создание GUI на Python с помощью библиотеки Tkinter
Цикл практических уроков по программированию для начинающих "Создание GUI на Python с помощью библиотеки Tkinter"
Создание GUI на Python с помощью библиотеки Tkinter -уроки.
скачать файл с уроками
Небольшие программы с использованием библиотеки Tkinter
Примеры графических игр и приложений на Tkinter
Создание GUI на Python с помощью библиотеки Tkinter -уроки.
скачать файл с уроками
Небольшие программы с использованием библиотеки Tkinter
Примеры графических игр и приложений на Tkinter
воскресенье, 26 ноября 2017 г.
Мобильные приложения для Python
Ссылки на мобильные приложения, позволяющие изучать язык
Мобильные приложения для изучения Python
8 приложений для изучения Python
Мобильные приложения для изучения Python
8 приложений для изучения Python
вторник, 21 ноября 2017 г.
Подведение итогов.
Почти три месяца действует объединение "Школа юного программиста". Подведем итоги деятельности. В результате обучения сформирован список проектов, которые разрабатываются участниками объединения:
- Справочная система по историческим событиям
- Консольный файловый менеджер
- Программа для составления расписания
- Игра "Крестики и нолики"
- Игра "Морской бой"
- Программа "Домашняя бухгалтерия"
- Программа "Криптография"
- Программа "Многоуровневая семантическая модель".
понедельник, 20 ноября 2017 г.
Управление строками и списками
Задачи для проверки знаний
Управление строками и списками
1. Дана текстовая строка. Каждую гласную, находящуюся в ней, размножить
в 3 раза..
2. Дана текстовая строка, возможно, содержащая ошибки вида «жы» и
«шы». Заменить их на правильные варианты и добавить после каждой
ошибки восклицательный знак.
3. Дана текстовая строка, возможно, содержащая запятые. Вставить после
каждой запятой или точки слово «однако».
4. Дана текстовая строка, содержащая предложение. Поменять в строке мес-
тами первые два слова и в конце поставить вопросительный знак.
Копирование с условием
5. Дана текстовая строка, возможно, содержащая пробелы. Удалить их из
строки полностью.
6. Дана строка, содержащая текст, части которого могут быть заключены в
скобки. Во вторую строку переписать текст из первой, за исключением
находящегося в скобках.
7. Дана текстовая строка. Записать во вторую строку все буквы, встречаю-
щиеся в первой строке (каждая буква — только 1 раз).
8. Дана текстовая строка. Напечатать, какие буквы в ней встречаются и
сколько раз.
Управление строками и списками
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
Телефонная книга + словари
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
воскресенье, 12 ноября 2017 г.
воскресенье, 22 октября 2017 г.
воскресенье, 15 октября 2017 г.
воскресенье, 1 октября 2017 г.
Про кодировки и правила оформления кода в Python
Юникод для чайников
Python: конвертируем кодировку текстовых файлов в UTF-8
Строки символов Unicode в Python 2 и Python 3
PEP 8 - руководство по написанию кода на Python
The Updated Guide to Unicode on Python
More About Unicode in Python 2 and 3
UCS vs UTF-8 as Internal String Encoding
Everything you did not want to know about Unicode in Python 3
Python: конвертируем кодировку текстовых файлов в UTF-8
Строки символов Unicode в Python 2 и Python 3
PEP 8 - руководство по написанию кода на Python
The Updated Guide to Unicode on Python
More About Unicode in Python 2 and 3
UCS vs UTF-8 as Internal String Encoding
Everything you did not want to know about Unicode in Python 3
пятница, 29 сентября 2017 г.
Ментальные карты
Ссылки к теме "Способы организации знаний" школы "Основы искусственного интеллекта"
Интеллект Карты; вводный урокДиаграмма связей
Ментальная карта как способ визуализации мышления
Создание интеллект-карт в программе XMind
Как создать интеллект карту на русском с программой XMind
Ссылки к теие "Управление знаниями"
Избранные статьи по менеджменту знаний
Антология статей по менеджменту знаний
Библиотека статей |
Статьи в pdf
четверг, 28 сентября 2017 г.
Telegram канал объединения
Для оперативной информации о деятельности детского творческого объединения "Школа юного программиста" создан канал Ntprog (https://t.me/ntprog). Предлагаю участникам объединения и родителям присылать свои сообщения и вопросы.
понедельник, 25 сентября 2017 г.
Запись в объединение "Школа юного программиста"
Бланк заявления для записи в объединение "Школа юного программиста".
Заявление необходимо передать во дворец каб.304 или 415 Шадриной Екатерине.
Заявление необходимо передать во дворец каб.304 или 415 Шадриной Екатерине.
четверг, 21 сентября 2017 г.
Тема "Списки"
Основы
Презентация "Списки"
Презентация "Списковые включения"
Практическая работа Использование списков
Обработка списков
Определяем присутствие всех элементов списка в другом списке
How to Reverse a List in Python
Determining if all Elements in a List are the Same in Python
Презентация "Списки"
Презентация "Списковые включения"
Практическая работа Использование списков
Обработка списков
Определяем присутствие всех элементов списка в другом списке
How to Reverse a List in Python
Determining if all Elements in a List are the Same in Python
Задания для темы "Функции"
- Создать функцию, преобразующую список в словарь, где ключом является элемент списка с указанным номером .
- Создать функцию, принимающую в качестве параметров список списков и индекс, сортирующую внутренние списки по элементу с указанным индексом.
- Создать функцию, разбивающую текстовую строку на части по указанному разделителю (например, пробел, символ табуляции и т.п.) и возвращающую список, каждым элементом которого является отдельная часть строки.
- Создать функцию, открывающую текстовый файл и преобразующую его содержимое в список, где элементами списка являются строки текстового файла.
- Создать функцию, открывающую текстовый файл, разбивающую каждую строку файла на части и преобразующую его содержимое в список, где элементами списка являются списки, содержащие элементы текстовых строк, строки текстового файла.
Функции. Посчитать количества одинаковых элементов в списке
Функции. Посчитать количества одинаковых элементов в списке
Тема: Функции
Для хранения количества каждого встречающегося в списке значения создадим словарь. В нем ключами будут числа, которое встречается в списке, а значениями - количества этих чисел в списке. Для примера, приведенного выше, в итоге должен был бы получиться такой словарь: {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
Задание:
Модуль pr1.py
Модуль lib1.py
Задание:
- изучить процесс установки программы pip.
- установить программу pip
- установить библиотеку easygui любым доступным способом
- изменить программу таким образом, что бы сообщения в окнах соответствовали смыслу выполняемой операции.
- изучить создание и использовании в языке Python структуры данных "список" (list).
- предложить варианты использования списка в программе
пятница, 15 сентября 2017 г.
Создание простого графического интерфейса
Для создания простого графического интерфейса рекомендуется использовать библиотеку
Некоторые полезные ссылки
Python easygui: в помощь начинающим питоноводам
Описание API
Примеры использования
Python easygui: в помощь начинающим питоноводам
Описание API
Примеры использования
среда, 13 сентября 2017 г.
Электронная запись в Школу
Электронная запись в школу производится по ссылке https://odod.egov66.ru/
Запись производится для лиц не старше 18 лет.
вторник, 12 сентября 2017 г.
Расписание занятий
Понедельник
1 группа 15.00 - 17.45
2 группа 18.00 - 19.45
Вторник
3 группа 15.00 - 17.45
4 группа 18.00 - 19.45
Среда
5 группа 15.00 - 17.45
1 группа 18.00 - 19.45
Четверг
2 группа 15.00 - 17.45
3 группа 18.00 - 19.45
Пятница
4 группа 15.00 - 17.45
5 группа 18.00 - 19.45
Суббота
Обсуждение проектов 16.00-18.00 ГДДТЮ
Подписаться на:
Сообщения (Atom)
Всероссийский конкурс научно-технологических проектов страница конкурса https://dm-centre.ru/sirius-konkurs-projectov Цель конкурс...
-
PyKnow - библиотека Python для разработки экспертных систем, реализующая подход CLIPS . Реализует продукционный подход к построению экспе...
-
Чем заняться после работы: языки и среды программирования для самых маленьких Тест: насколько хорошо вы разбираетесь в Python? Подборка ...
-
Научно-практическая конференция проходит в три этапа: на школьном, городском и областном уровне для учащихся 5-11 классов. На втором этап...