Онлайн курс обучения python для начинающих, Изучайте Питон с Нуля по нашим урокам

Примеры задач курса

Пройти первые 25 уроков и попробовать написать первые программы можно бесплатно. Для этого нужно только зарегистрироваться.

Ниже вы найдете примеры задач, которые пройдете ближе к концу курса. Разумеется, все темы, которые необходимы для их решения, есть в курсе.

Пример №1

Несмотря на то, что сама по себе игра крестики-нолики не слишком сложная, ее написание будет разбито на несколько уроков. И первое, что нужно сделать, это отображение игрового поля. Для того, чтобы легче ориентироваться и лучше понимать написанный код, прорисовку игрового поля нужно сделать в отдельной функции.

Создайте функцию и назовите ее draw_state. Эта функция должна принимать один параметр — состояние игры.

Состояние игры можно представить как список из 9-ти элементов, где элемент с индексом 0, это верхняя левая клетка:

Если элемент списка None, в клетке нет ни крестика, ни нолика. Если элемент списка равен строке "o", в клетке должен быть нарисован нолик, а если "x" — крестик. То есть, такой код

GAME_STATE = ["x", None, None, "x", "o", None, None, None, "o"]
draw_state(GAME_STATE)

с реализованной функцией draw_state, должен дать вот такой результат:

Цвет и толщина линий неважны для бота при проверке. Главное, чтобы была написана функция draw_state, которая принимала бы один аргумент — список с состоянием игры. Крестики и нолики должны рисоваться в центре нужной клетки. Радиус нолика — 30 пикселей, а высота и ширина крестика — от 60 до 80 пикселей. Высота и ширина одной клетки должна быть равна ширине и высоте холста, разделенной на три, то есть 116 пикселям.

И не забудьте нарисовать линии, которые разделяют игровое поле.

Пример №2

Напишите программу, рисующую часы со стрелками. Часы должны показывать текущее время. Выглядеть это все должно примерно так:

Основой этой программы будет бесконечный цикл, в каждой итерации которого надо нарисовать последовательно следующие элементы часов:

  • Границу часов — круг с радиусом 170 пикселей и центром в точке (175, 175)

  • 12 длинных засечек для часов и 60 коротких для минут. Для этого нужно нарисовать 12 линий длиной 170 пикселей с помощью canvas.radius_line (описание этой функции смотрите в справочнике) и 60 линий длиной 155 пикселей. После нужно нарисовать закрашенный круг белого цвета с центром в точке (175, 175) и радиусом 150

  • Часовую стрелку длинной 100 пикселей и толщиной 6 пикселей. Толщину линий можно изменить с помощью canvas.line_width(6)

  • Минутную стрелку длинной 130 и толщиной 2 пикселя

  • Секундную стрелку длинной 160 и толщиной 1 пиксель

  • Закрашенный кружочек с радиусом 7 и центром в точке (175, 175)

В отличии от предыдущего урока, в этом как раз и нужно использовать свойства даты/времени для получения текущего часа, минуты и секунды:

import datetime

dt = datetime.datetime.now()
dt.hour  # Час
dt.minute  # Минута
dt.second  # Секунда

Для прохождения этого урока необязательно использовать разные цвета для разных элементов часов, как в примере. Робот засчитает решение и без этого. Главное, чтобы все остальное было в порядке.

Пример №3

Напишите программу, которая будет делать анимацию кругов в случайных координатах. Цвета могут не совпадать, но в целом должно быть похоже на это:

Сначала в программе нужно объявить кортеж colors из названий семи цветов. Каждый цвет — это строка. Цвета можно выбрать из списка на этой странице Википедии. Неважно, 'Pink' это или 'Lime' — главное, чтобы цвета существовали и были разные.

Потом в программе должен начаться бесконечный цикл, в каждой итерации которого должна быть анимация появления семи концентрических кругов с цветами из кортежа colors и радиусами от 150 до 185 пикселей с шагом 5. Для рисования семи кругов каждой итерации используйте цикла for, а для получения индекса цвета — функцию enumerate. При рисовании каждого из кругов делайте паузу в пять сотых секунды.

Перед циклом for нужно получить случайные координаты центра кругов. Сделать это нужно с помощью модуля random, который отвечает в Питоне за случайность. Обе координаты можно получить с помощью одинаковой функции randint — она вернет случайное число от 0 до 350.

random.randint(0, 350)

Не забудьте импортировать модули random, canvas и time в начале программы.

Вернуться на главную Попробовать бесплатно