Нажми — и увидишь, что делает команда
- ⏱ Сколько займёт
- 40–60 минут, 6 шагов. Каждый шаг заканчивается результатом на экране.
- 💻 Что нужно
- Телефон или компьютер. Редактор открывается прямо в браузере, ставить ничего не надо.
- ⏸ Если прервёшься
- Ничего не потеряется: прогресс сохраняется на этом устройстве. Вернёшься — продолжишь с того же шага.
- 🎓 Чему научишься
- списки · индексы · случайность
Коробка на много значений
Ночью купол раскрывается. Сова смотрит вверх и вдруг говорит: «Звёзды разного цвета. Заметил?»
Голубые — молодые и горячие. Красные — старые. Белые — посередине.
«Значит, цвет — это данные. А данные удобно держать не по одному, а списком».
Это анимация исполнения кода: команды идут строка за строкой, и звёзды загораются в том же порядке. Своё небо ты соберёшь из списка цветов и random — координаты в кадре записаны хитрее, чем понадобится тебе.
Читать текстом
Соберём звёздное небо, где каждый запуск — новое созвездие.
1 # СПИСОК: много значений в одной коробке
2
3 colors = ["gold", "orange", "white"]
4
5 print(colors[0]) → gold (счёт с НУЛЯ!)
6 print(colors[1]) → orange
7 print(colors[2]) → white
8 print(len(colors)) → 3 (сколько всего)
Список ты уже видел в «Спирали» — там из него брались цвета витков. Теперь разберём его как следует. Список пишется в квадратных скобках, значения через запятую. Берут из него по номеру — и вот тут главная ловушка: счёт идёт с нуля. Первый элемент это [0], а не [1]. Так во всех языках, привыкай сразу.
1 import random # позвали случайность
2
3 random.randint(1, 6) # кубик: целое от 1 до 6
4 random.choice(colors) # случайный ЭЛЕМЕНТ списка
5
6 # каждый запуск даёт другой результат
Строка 1 обязательна: import random — без неё Python не знает этих команд. Дальше два инструмента: randint даёт случайное число в диапазоне, а choice вытаскивает случайный элемент из списка.
Генератор созвездий
Нажми «Новое небо» несколько раз. Код слева не меняется ни на букву — а картинка каждый раз новая. Вот что делает random: одна программа, бесконечно много результатов.
Про penup() забывают все и сразу видят результат: вместо аккуратных звёзд получается паутина из линий. Подними перо перед прыжками — и небо станет чистым.

- 1Верхние строки — место для списка цветовСюда впишешь import random и свой список: cveta = ["gold", "orange", "white"] — квадратные скобки, значения через запятую. Скобки и кавычки лежат в палитре «Знаки», а готовая кнопка import random — в палитре «Ещё».
- 2Кнопка penup() — и рядом pendown()penup() поднимает перо: черепашка едет, но не рисует. Про неё забывают все и сразу видят результат — вместо аккуратных звёзд паутина из линий по всему небу. Прыгнул в новое место — опусти перо обратно кнопкой pendown().
- 3Кнопка goto()goto(x, y) — прыжок в точку по координатам: центр холста это (0, 0), вправо и вверх числа растут. Саму звезду ставит dot(10) — вот этой кнопки в палитре нет, её печатают руками, она короткая.
- 4Жёлтая кнопка ▶ Запустить — и ещё раз, и ещёЖми несколько раз подряд. Код не меняется ни на букву, а созвездие каждый раз другое — вот что делает random. Одна программа, бесконечно много результатов.
- 5Холст — твоё небо целикомТут распахнётся всё созвездие. Небо вышло из линий, а не из точек — значит, забыл penup(). Все звёзды одного цвета — значит, random зовётся один раз до цикла, а надо внутри, на каждой звезде.
Это наш редактор «Python в кармане» со страницы /kod/ — открой её в соседней вкладке. На кадре он показан дважды: слева вкладка «Код», где ты пишешь, справа вкладка «Результат», куда программа переключится сама после запуска. Нажимай на кружки по порядку: метка покажет место, строка ниже объяснит, зачем оно.
Небо в четырнадцать строк
1 from turtle import *
2 import random
3
4 speed(0); bgcolor("black"); hideturtle()
5 penup() # перо вверх, следов не будет
6
7 colors = ["gold", "orange", "white"]
8
9 for star in range(40):
10 x = random.randint(-250, 250)
11 y = random.randint(-180, 180)
12 goto(x, y)
13 color(random.choice(colors))
14 dot(random.randint(4, 14)) # разный размер звёзд
В строке 4 три команды написаны через точку с запятой — так тоже можно, это просто «три команды в одной строке»; обычно каждую пишут на своей. Дальше разбери по строкам: 10–11 выбирают случайное место, 12 прыгает туда, 13 берёт случайный цвет из списка, 14 ставит звезду случайного размера. Три случайности на каждую звезду — поэтому небо никогда не повторяется.
Небо рисуется по-настоящему. Тридцать звёзд появляются одна за другой: каждая в случайном месте, случайного цвета и размера. Фон чёрный — это строка bgcolor("black") в самом начале, без неё звёзды на белом почти не видно. Запустишь — получится другое небо.
Оба способа нужны, просто для разного. Ровный ритм [i % 3] хорош в узорах, где важна симметрия. А random.choice даёт естественный беспорядок — как настоящее небо, где звёзды разбросаны без системы.
Проверка · В списке 4 цвета. Какой номер у последнего?
Что случится, если забыть строку import random?
Оба верных ответа — +10 дублонов.

Цвет — это тоже число
Компьютер не знает слова «красный». Он знает три числа: сколько красного, зелёного и синего. Из них собирается любой оттенок.
Поэтому цветом можно считать: сложить, усреднить, поменять по формуле. Так работают фильтры в телефоне и градиенты в играх.
А список цветов — это уже данные. Тот же приём, что и таблица очков: одна коробка, много значений, доступ по номеру.
Список закончился
Три звезды нарисовались, четвёртая уронила программу
Три звезды нарисовались и всё оборвалось. IndexError — новая для тебя ошибка, но говорит она прямо: попросили элемент, которого в списке нет. Найди строку.
Пиши len(colors) вместо числа 3 — и добавляй в список сколько угодно цветов, код останется рабочим. Это тот же приём, что с углом на «Розе ветров»: не вписывай руками число, которое можно посчитать.
Небо, в которое веришь
Правило настоящего неба: мелких звёзд должно быть намного больше, чем крупных. Если все одинаковые — картинка выглядит искусственной. Случайный размер решает это одной строкой.
1 # координаты звёзд созвездия — СПИСОК СПИСКОВ
2 constellation = [[-80, 60], [-20, 90], [40, 50], [70, -10], [20, -60]]
3
4 penup()
5 goto(constellation[0][0], constellation[0][1])
6 pendown() # перо вниз: линии рисуются
7
8 for point in constellation:
9 goto(point[0], point[1])
10 dot(12, "gold")
Тут две новинки. Список списков: каждая звезда — пара координат в своих скобках. И цикл for точка in созвездие — он идёт прямо по элементам, без номеров. Часто так удобнее.
Третья галочка — суть острова. Запусти программу дважды и убедись, что небо разное. Это первый раз, когда твоя программа даёт непредсказуемый результат — и это не поломка, а замысел.
Карта твоего неба
Координаты созвездия удобно подобрать на бумаге в клетку: нарисуй фигуру, посчитай клетки от центра и перепиши числа в список. Так делают, когда рисуют по точкам что-то конкретное.
Как сдать работу: в «Python в кармане» код сохраняется сам — закрыл страницу, вернулся, и он на месте. Кнопки «поделиться» там нет и ссылки на твою работу тоже: покажи экран взрослому или пришли скриншот — этого достаточно. Поле выше нужно, только если ты писал в другом редакторе, который выдаёт ссылку. Запусти небо при зрителях несколько раз подряд. Каждый раз новое — и объясни, что это не разные программы, а одна и та же со случайностью. Обычно именно тут у людей меняется представление о том, что такое код.
Читать текстом
Жми — Гильдия отметит пятый остров Обсерватории.