Урок 12. Вкладені списки та словники
Урок 12. Вкладені списки та словники
Section titled “Урок 12. Вкладені списки та словники”Тривалість: 45–55 хв
XP: 180
🎯 Місія
Section titled “🎯 Місія”Навчитися працювати зі списками словників і словниками, які містять списки.
💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Уявіть коробки в коробках. Є коробка «Будинок», у ній — коробки «Кімната1», «Кімната2», а в кожній кімнаті — коробки «Меблі», «Речі». Так само працюють вкладені структури: є список enemies, у кожному елементі — словник з ключами name, hp, damage. Щоб дістатися до потрібного значення, спочатку береш елемент за номером, а потім — за ключем.
graph TD
A["enemies (список)"] --> B["[0] (словник)"]
A --> C["[1] (словник)"]
A --> D["[2] (словник)"]
B --> E["name: Slime"]
B --> F["hp: 20"]
B --> G["damage: 3"]
C --> H["name: Zombie"]
C --> I["hp: 40"]
C --> J["damage: 7"]
D --> K["name: Dragon"]
D --> L["hp: 200"]
D --> M["damage: 25"]
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”enemies = [ # Створюємо СПИСОК (квадратні дужки []) {"name": "Slime", "hp": 20, "damage": 3}, # Перший елемент — СЛОВНИК {"name": "Zombie", "hp": 40, "damage": 7}, # Другий елемент — СЛОВНИК {"name": "Dragon", "hp": 200, "damage": 25} # Третій елемент — СЛОВНИК]print(enemies[0]["name"]) # Спочатку [0] — беру перший елемент, # потім ["name"] — беру значення ключаfor enemy in enemies: # Перебираю кожен елемент списку print(enemy["name"], enemy["hp"]) # Для кожного ворога — його name та hp💡 Вкладені структури — це просто комбінація списків і словників. Спершу завжди йде номер елемента
[0], а потім — ключ["hp"]. Ніколи навпаки!
🧠 Список ворогів
Section titled “🧠 Список ворогів”enemies = [ {"name": "Slime", "hp": 20, "damage": 3}, {"name": "Zombie", "hp": 40, "damage": 7}, {"name": "Dragon", "hp": 200, "damage": 25}]
print(enemies[0]["name"])for enemy in enemies: print(enemy["name"], enemy["hp"])🎒 Список усередині словника
Section titled “🎒 Список усередині словника”hero = { "name": "Marko", "hp": 100, "inventory": ["sword", "potion", "key"]}print(hero["inventory"][0])✏️ Вправи
Section titled “✏️ Вправи”- Створи 4 ворогів.
- Виведи
Slime — 20 HPтощо. - Додай кожному
level. - Знайди ворога з найбільшим HP без
max().
⭐ Challenge — Dungeon
Section titled “⭐ Challenge — Dungeon”Створи:
dungeon = { "name": "Dark Cave", "enemies": [], "treasures": []}Заповни даними та красиво виведи вміст.
🐉 Boss — Monster Database
Section titled “🐉 Boss — Monster Database”Створи 5 монстрів. Порахуй їх кількість і сумарний HP, а потім випадково вибери одного:
import randomenemy = random.choice(enemies)✅ Готовий далі, якщо
Section titled “✅ Готовий далі, якщо”Марко впевнено читає конструкції на кшталт enemies[0]["hp"] і перебирає вкладені дані.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Створи маленьку базу героя та 5 монстрів.
⚡ Перевір себе
Section titled “⚡ Перевір себе”- Що означає
enemies[0]["name"]? Які два кроки тут є? - Як отримати HP третього ворога?
- Чи можна змінити
enemies[1]["hp"]напряму? - Як перебрати всіх ворогів і вивести лише їхні імена?