Python програмування. Рівень 2.

e-Learning group/community All Groups Join the group

Challenges (9)
Learning steps
About the group
Information & Summary
Resources (1)
Courses (7)
Members (25)

Це група для спільного вивчення Python до професійного рівня. Група для початківців

Upcoming Events View all 2 events

Challenges View all 9 challenges

Completed: 8 (%32), Skipped: 0 (%0)
10
0

Потрібно придумати як саме ми будемо вчитися.

Я попоную писати спільний проект або декілька проектів. Вибрати щось корисне та зробити його опен сорс

Інші варіанти: знайти якись список задач та вирішувати їх, в звіті публікувати своє рішення

Задача цього челенджу прибумати свою ідею та описати її у звіті до челенджу

Completed: 2 (%8), Skipped: 0 (%0)
1
0

Учасники групи не писали великих програм на Пайтоні (будемо так вважати)

Знаходимо в інтернеті якісь великі чи середні проекти на Пайтоні та вивчаємо вихідні коди. Бажано щоб це не був один скрипт, а багато модулів (класів).

У звіті пишемо що саме ви дослідили.

Вивчити як організовані зв’язки між компонентами. Які є способи організації складної структури. Як виконується запуск програми та підключення компонентів динамічно. 

Результатом має бути розуміння "best practices" програмування складних систем на Python.

Completed: 6 (%24), Skipped: 0 (%0)
4
0

Потрібно вибрати правила кодування спільного проекту. Проведемо дослідження різних рекомендацій та стандартів. 

Хай кожен погуглить та розкаже що він знайшов. У репорті описати стандарт який ви вважаєте найкращим. 

Потім виберемо що нам найбільше підходить.

Completed: 9 (%36), Skipped: 0 (%0)
23
0

На скайп конференції ми вирішили що будемо роботи гру "Хрестики Нолики" і на її основі вчити різні техніки, підходи, методи програмування в Пайтоні.

Отже, завдання №1. Написати "Хрестики Нолики".

  • Не заморочуватися із інтерфейсом. Може бути командна строка
  • Не дуже заморочуватися із "інтелектом". Програма може грати "як тупий гравець". Але по правилах. Може ставити ходи рандомно, без аналізу.
  • Має бути підтримка "людина проти омпютера" та "людина проти людини"
Інших вимог на даному етапі немає. Потім ми будемо вдосконалювати наші програми.

Результат опублкувати на Гітхаб або аналогічному сервісі щоб можна було показати свій код іншим учасникам.

Ссилку на код дати в репорті. 

Не аналізуйте код інших учасників поки самі не зробили!

Completed: 0 (%0), Skipped: 0 (%0)
3
0
0

Коли будуть опубліковані звіти учасників групи до завдання "Робимо гру Хрестики Нолики" то оцініть кожен звіт.

Подивіться код та потестуйте його.

В звіті оцініть за такими критеріями:

  • Чи взагалі працює, які проблеми знайдено
  • Чи одразу запустився скрипт, що було не так при запуску
  • Чи вам подобається код, чи легко його читати. Що саме не подобається в коді
  • Чи легко вам було би модифікувати такий код
  • ЧИ є у вас інші зауваження

Переглянути мінімум 5 звітів якщо їх є більше. Бажано вибирати випадковим чином який звіт ви бедете аналізувати

Completed: 2 (%8), Skipped: 0 (%0)
2
0

Ми вже зробили програму Хрестики Нолики. Але ця програма є "некрасивою". Її важко розширювати чи модифікувати. 

Також важко використати цю програму як компонент до іншої більшої програми.

Ми розділимо наш код на модулі та створимо класи щоб використовувати їх в інших системах.

Завдання.

Модифікувати код програми "Хрестики Нолики". Розділити її на 3 компоненти:

  • клас TicTacToe який керує процесом гри. Об’єкт цього класу містить стан гри та апрацьовує ходи
  • клас Gamer отримує об’єкт класу TicTacToe та виконує хід від імені комп’ютера. він використовується тоді коли користувач грає із комп’ютером тільки.
  • основна програма. виконує ввід та вивід. створює об’єкти відповідних класів

потрібно розібратися який найкращий спосіб передати об’єкт TicTacToe у Gamer. чи є в python підтримка передачі об’єкта "за почиланням" (по ссилці) чи треба передавати копію кожного разу коли треба зробити хід щоб мати актувальний стан гри.

Коли ми будемо мати ці 2 класи ми зможемо легко міняти інтерфейс програми, адже логіка вже буде окремо

Completed: 0 (%0), Skipped: 0 (%0)
6
0
0

Для наших наступний завдань потрібно буде обмінюватися нашими реалізаціями гри Хрестики Нолики.

Ми будемо брати свій GUI  але використовувати логіку інших учасників. Для цього нам треба щоб класи із логікою всі мали однаковий інтерфейс. (тут я маю на увазі інтерфейс в значенні об’єктно-орієнтованого програмування).

Такий обмін нам потрібен для того щоб потренуватися працювати в команді, щоб вміти ефективно розподіляти роботу між учасниками і потім збирати всі компоненти до купи.

Перше завдання це почитати і знайти чи взагалі є підтримка таких інтерфейсів в Пайтоні. Якщо ні то треба буде подивитися які є "костилі" чи "best practices" для такого випадку. 

Щось є для цього. Але треба шукати і розбиратися. 

Отже, завдання:

  • Зрозуміти що таке інтерфейс класу в теорії. Можна почати звідси. Якщо знайшли хороший опис то додайте в коментарі
  • Знайти способи реалізації в Пайтоні для інтерфейса класу.
  • У звіті описати ваш варіант інтерфейсу для двох класів які ми робили в попередньому завданні (логіка гри та логіка гравця-компютера)
Completed: 0 (%0), Skipped: 0 (%0)
0
0
0

Модифікувати свій варіант хрестиків-ноликів із використанням інтерфейсу узгодженого в попередньому завданні

Потестувати свою реалізацію із класами всіх інших учасників. Для цього треба просто перезаписати 2 своїх класи на відповідні 2 класи іншого учасника.

У звіті описати проблеми та помилки які виникли.

Повторювати тести поки всі варіанти не будуть правильно працювати із вашою основною програмою. Нагадаю, основна програма тільки запитує ввід від користувача та виводить результати, а вся логіка в класах які можне міняти (назва модулів у всіх однакові)

Last reports

Author Challenge Link
Andrew Vakulenko Робимо гру Report