🎯 Цели занятия
- Понять, что такое искусственный интеллект в простых примерах из жизни и игры
- Закрепить типы данных и аннотации в функциях (
str,number,bool) - Собрать цикл
whileс условием «пока впереди нет стены» - Использовать
agent.detect,agent.inspect_block,blocks.name_of_block - Написать мини-проект «исследователь» и улучшить отчёт в чате
📋 План занятия
| Этап | Время | Что делаем |
|---|---|---|
| История про ИИ | 10 мин | Зачем нужен «умный» помощник |
| Типы данных | 15 мин | Строка, число, логика + аннотации в def |
| Алгоритм исследователя | 15 мин | Цикл, детект преграды, запись блоков |
| Интерактив | 15 мин | Типы и порядок шагов |
| Мини-проект | 30 мин | Пишем программу по подсказкам |
| Итоги | 5 мин | Викторина и рефлексия |
| Итого | 90 мин | — |
while и условия — в 1.3, движение агента — в разделе 2. Здесь всё собирается в один проект.
1 Типы данных и зачем их указывать
В Python (и в Minecraft Education) в одной переменной может лежать текст, число или да/нет. От типа зависит, что можно делать: числа складывают, строки — склеивают, логические значения — проверяют в if и while.
game = TrueВ нашем проекте в функции отчёта мы явно пишем, какие типы ждём — это называется аннотация типов (подсказка для тебя и для редактора):
def show_report(trail: str, steps: number):
# trail — длинная строка с названиями блоков
# steps — сколько шагов прошёл агент
player.say("Шагов: " + str(steps))
print, но в Python это встроенная команда. Лучше назвать функцию show_report или finish_explore, чтобы не путаться.
Зачем указывать типы?
- Ты сразу видишь: сюда придёт текст, сюда — число.
- Меньше ошибок вроде
"5" + 3(строка + число безstr()). - В больших проектах так проще читать чужой код — как подписи на коробках.
2 Алгоритм «Агент-исследователь»
Задача: программа работает, пока перед агентом нет блока. На каждом шаге агент смотрит, какой блок под ним, добавляет название в строку result, делает шаг вперёд и увеличивает счётчик. Когда впереди стена — цикл останавливается и вызывается функция с отчётом.
True, если впереди есть блок (преграда).0 — «блока нет».def show_report(a: str, b: number):
player.say("Результат:")
player.say(a)
player.say("Блоков пройдено: " + str(b))
player.say("Закончили :)")
amount = 0
result = ""
block = AIR
game = True
while game:
if agent.detect(AgentDetection.BLOCK, FORWARD):
game = False
show_report(result, amount)
block = agent.inspect_block(DOWN)
if block == 0:
player.say("Блока нету :(")
else:
result = "" + result + blocks.name_of_block(block) + ", "
agent.move(FORWARD, 1)
amount += 1
C → Run).
3 Как сделать программу «красочнее»
Базовый код уже работает — улучшения не меняют идею, а делают игру понятнее и интереснее:
- Старт и финиш — короткие сообщения от
player.sayиagent.say(«миссия началась», «финиш»). - Красивый отчёт — разделители, подписи «Маршрут», «Шагов» вместо одной строки.
- Прогресс — каждые 5 шагов писать в чат «уже N шагов».
- Голос агента — иногда озвучивать имя блока через
agent.say, не на каждом шаге (иначе спам). - Разделители в строке — вместо запятых использовать
→или·, чтобы список читался.
Готовый «улучшенный» вариант — за паролем преподавателя в конце практики. Сначала собери базовую версию сам!
🔑 Сопоставь переменную и тип
🧩 Расставь шаги одной итерации цикла
Один «круг» внутри while game (пока ещё не финиш):
ИИ в жизни и в программировании — можно спросить простыми словами!
while.«Алиса, чем нейросеть отличается от обычной программы с if и while?»
🛠️ Мини-проект: Исследователь мира
Открой Python в Minecraft (C). Собери программу по шагам.
Создай def show_report(a: str, b: number): (или свои имена параметров с теми же типами). Внутри — несколько player.say: заголовок, строка a, число шагов через str(b).
amount = 0, result = "", game = True. Объясни соседу, какой тип у каждой переменной.
while game: — тело цикла выполняется, пока game равно True.
if agent.detect(AgentDetection.BLOCK, FORWARD): → game = False и вызов show_report(result, amount).
block = agent.inspect_block(DOWN). Если не 0 — добавь blocks.name_of_block(block) в result (склеивание строк).
agent.move(FORWARD, 1) и amount += 1. Протестируй на дорожке со стеной в конце.
Добавь стартовые сообщения, красивый отчёт или прогресс каждые N шагов. Сверься с подсказками в блоке «Как сделать программу красочнее».
🔐 Готовое решение (улучшенная версия) — если застрял или преподаватель разрешил.
📝 Проверь себя
1. Когда цикл while в нашем проекте останавливается?
2. Какой тип у переменной game?
3. Зачем писать b: number в функции отчёта?
4. Что делает agent.inspect_block(DOWN)?