Вадим Бордик

Вадим Бордик

Директор школы программирования для детей «Пиксель»

Топ-8 интересных и простых проектов на Python для детей и начинающих (с кодом)

Топ-8 интересных и простых проектов на Python для детей и начинающих (с кодом)
16 декабря 2022
Подпишитесь на нас в Telegram

Главными драйверами развития многих отраслей сегодня стали Data Science, искусственный интеллект и машинное обучение. Во всех трех направлениях интенсивно используется Python, или «Пайтон». Знание этого языка открывает новые карьерные перспективы для самых разных специалистов. 

Важный нюанс: востребована любая степень владения Python. Он изначально был задуман как язык с радикально упрощенным синтаксисом. К тому же в Python имеется хорошая библиотека, и специалист с базовыми навыками может очень и очень многое. Даже школьники способны освоить этот язык программирования.

Об опыте обучения Python детей и подростков рассказывает Вадим Бордик, директор школы программирования «Пиксель».

Python для школьников: возможности и перспективы

Фреймворки превращают десяток строк кода в одну команду, парой функций создается нейросеть, которая автоматически «додумает за вас» вашу исходную логику. Восстановленные с помощью нейросетей лица исторических персонажей, 3D-визуализации картин Ван Гога, математические модели экономической динамики, дающие прогноз развития компании на таком уровне проработки и насыщенности фактурой, который недоступен при традиционных методах, – все это примеры того, на что способны даже не очень опытные специалисты по Python. 

В наши дни популярно программирование на «Пайтон» для детей. Когда сегодняшние ученики станут взрослыми, проектами с применением всей мощи искусственного интеллекта будет сложнее удивить. Однако в ближайшие годы это Клондайк, ждущий удачливых и смелых. Учить язык можно по книгам и видео, но еще лучше попытаться узнать Python на практике. 

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

1. Игра «Крестики-нолики»


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

Представляете, как расширится горизонт ребенка, если он поймет, что может сделать игру самостоятельно и она будет подчиняться любым его правилам? 

Программирование для детей – отличный способ почувствовать, на что способны юные программисты. Ребенок даже сможет сыграть в собственную игру со сверстником. А вы сами никогда не хотели создать компьютерную игру лучше, чем та, которая нравилась вам в детстве?

При помощи библиотеки Pygame создается игровое поле из 9 клеток. Игрок, который первым смог поставить в ряд три O или X, побеждает. 

import random 

import sys

board=[i for i in range(0,9)]

player, computer = '',''

# Corners, Center and Others, respectively

moves=((1,7,3,9),(5,),(2,4,6,8))

# Winner combinations

winners=((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6))

# Table

tab=range(1,10)

def print_board():

x=1

for i in board:

end = ' | '

if x%3 == 0:

end = ' \n'

if i != 1: end+='---------\n';

char=' '

if i in ('X','O'): char=i;

x+=1

print(char,end=end)

def select_char():

chars=('X','O')

if random.randint(0,1) == 0:

return chars[::-1]

return chars

def can_move(brd, player, move):

if move in tab and brd[move-1] == move-1:

return True

return False

def can_win(brd, player, move):

places=[]

x=0

for i in brd:

if i == player: places.append(x);

x+=1

win=True

for tup in winners:

win=True

for ix in tup:

if brd[ix] != player:

win=False

break

if win == True:

break

return win

def make_move(brd, player, move, undo=False):

if can_move(brd, player, move):

brd[move-1] = player

win=can_win(brd, player, move)

if undo:

brd[move-1] = move-1

return (True, win)

return (False, False)

# AI goes here

def computer_move():

move=-1

# If I can win, others do not matter.

for i in range(1,10):

if make_move(board, computer, i, True)[1]:

move=i

break

if move == -1:

# If player can win, block him.

for i in range(1,10):

if make_move(board, player, i, True)[1]:

move=i

break

if move == -1:

# Otherwise, try to take one of desired places.

for tup in moves:

for mv in tup:

if move == -1 and can_move(board, computer, mv):

move=mv

break

return make_move(board, computer, move)

def space_exist():

return board.count('X') + board.count('O') != 9

player, computer = select_char()

print('Player is [%s] and computer is [%s]' % (player, computer))

result='%%% Deuce ! %%%'

while space_exist():

print_board()

print('#Make your move ! [1-9] : ', end='')

move = int(input())

moved, won = make_move(board, player, move)

if not moved:

print(' >> Invalid number ! Try again !')

continue

if won:

result='*** Congratulations ! You won ! ***'

break

elif computer_move()[1]:

result='=== You lose ! =='

break;

print_board()

print(result)

2. Игра в «Чушь» 

Отличный проект для новичков, потому что требует отработать операции со строками, переменными и конкатенацией. Для создания игры используется всего лишь один цикл while. С помощью итератора loop количество прохождений, которое ему потребуется будет ограничено 10. Обратите внимание, что инкремент, то есть увеличение значения переменной loop на один при каждой итерации, запускается в конце, в конструкции loop + 1. 

Далее следует группа «инпутов». Каждый из них будет просить при запуске программы ввести прилагательные, существительные и другие слова, необходимые для игры. 

Группа «принтов», замыкающая код, выводит истории, подставляя с помощью переменных введенные вами случайные слова в заготовленные заранее предложения. Получаются забавные фразы. 

В отличие от Java Script, где переменные вводятся словом let и var, а также php с его значком $ перед каждой переменной (знаменитое преимущество языка, которым PHP-программисты отбиваются от нападок на свой язык), в Python переменная вводится обычным словом. Очень удобно. Подойдет для курсов программирования Python для детей начального уровня.


3. Программа, загадывающая числа

Программа, которую будем писать на этот раз, тоже основана на цикле while. Пока в переменную play_again мы не положим ответ «Нет», выбрав соответствующий вариант из предложенных программой альтернатив, наш цикл будет загадывать случайное число с помощью рандомизатора random.randint. Если введенное вами в «инпут» число совпадет с загаданной программой цифрой, то она поздравит вас с победой. 

Обратите внимание, как удобно в Python использовать введенную в форму обратной связи строки. Код спросит ваше имя, а затем с помощью конструкции {} и элемента format вставит его в любые предложения с конструкцией {}. Во многих других языках такое удобство достигается только шаблонизаторами. 

Функции в Python объявляются таким способом: def show_score(), а вызываются как обычно: show_score(). В массив attempts_list[] складывается информация о количестве ваших попыток угадать: какое число в случайном порядке выбрала наша программа. 

Если вы преподаете детям основы программирования, обратите внимание на этот проект. Он настолько прост, что даже школьники смогут осваивать Python на его примере.

import random

attempts_list = []

def show_score():

if len(attempts_list) <= 0:

print("There is currently no high score, it's yours for the taking!")

else:

print("The current high score is {} attempts".format(min(attempts_list)))

def start_game():

random_number = int(random.randint(1, 10))

print("Hello traveler! Welcome to the game of guesses!")

player_name = input("What is your name? ")

wanna_play = input("Hi, {}, would you like to play the guessing game? (Enter Yes/No) ".format(player_name))

# Where the show_score function USED to be

attempts = 0

show_score()

while wanna_play.lower() == "yes":

try:

guess = input("Pick a number between 1 and 10 ")

if int(guess) < 1 or int(guess) > 10:

raise ValueError("Please guess a number within the given range")

if int(guess) == random_number:

print("Nice! You got it!")

attempts += 1

attempts_list.append(attempts)

print("It took you {} attempts".format(attempts))

play_again = input("Would you like to play again? (Enter Yes/No) ")

attempts = 0

show_score()

random_number = int(random.randint(1, 10))

if play_again.lower() == "no":

print("That's cool, have a good one!")

break

elif int(guess) > random_number:

print("It's lower")

attempts += 1

elif int(guess) < random_number:

print("It's higher")

attempts += 1

except ValueError as err:

print("Oh no!, that is not a valid value. Try again...")

print("({})".format(err))

else:

print("That's cool, have a good one!")

if __name__ == '__main__':

start_game() 

4. Камень, Ножницы, Бумага

Эта простая игра – замечательный способ потренировать использование функций Python – одного из важнейших концептов программирования на Python. Чтобы сыграть, нам понадобятся следующие методы:

  • функция рандомного выбора: предложить вариант камень, ножницы или бумага в ответ на ваш ход;

  • функция валидации вашего хода: тут нам потребуется «обработать исключения», то есть запланировать реакцию в случае, если вы поведете себя так, что игру нельзя будет продолжать, например, не введете какой-нибудь параметр;

  • функция определения победителя: здесь мы должны сопоставить свой ход с ходом ИИ и объявить победителя. Предусмотрите все варианты! Если и человек, и машина покажут «бумагу», то это ничья;

  • функция-счетчик: последнее, что нам будет нужно, данный метод будет вести счет, чтобы определять победителя по итогам нескольких раундов.

В программе ниже первый ход делает человек. Он может ввести свой ход строками: «камень», «ножницы» или «бумага». Также игрок может выбрать букву, символизирующую тот или иной ответ. 

После того, как мы убедились по ходу выполнения программы, что ответ игрока действительно является строкой, функция расчета результата определяет, кто победил, а метод, отвечающий за подсчет побед в раундах, обновляет свой счетчик на один раунд. Снова отметим, что создание игры – хорошая и интересная задача, если речь идет о программировании для детей на языке Python.


Если этот урок Python для детей остался непонятным, можно посмотреть видео на тему игры «Камень, ножницы, бумага», где дана пошаговая инструкция ее создания. 

Python для детей | Камень – Ножницы – Бумага | Как создать игру на Python | Python для подростков

5. Программа, играющая в кости

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

Удобство программы в том числе в том, что вы можете проставить в коде любые значения и симулировать самые разные игры. Как известно, в некоторых настольных играх используются кости с числами больше шести. 

Подключаем модуль random и запускаем игру в цикле. Выход из while – ответ «нет» на вопрос о продолжение игры. Как видим, это достигается включением в «стэйтмент» цикла соответствующего сравнения «==». Цикл выполняется до тех пор, пока roll_again равняется «да». Несмотря на то, что программа сложнее, чем некоторые другие проекты, в курсах программирования на Python для детей ее можно давать в качестве задания после того, как у изучающего появится понимание основных конструкций языка. 

import random 

#Enter the minimum and maximum limits of the dice rolls below

min_val = 1

max_val = 6

#the variable that stores the user’s decision

roll_again = "yes"

#The dice roll loop if the user wants to continue

while roll_again == "yes" or roll_again == "y":

print("Dices rolling...")

print("The values are :")

#Printing the randomly generated variable of the first dice

print(random.randint(min_val, max_val))

#Printing the randomly generated variable of the second dice

print(random.randint(min_val, max_val))

#Here the user enters yes or y to continue and any other input ends the program

roll_again = input("Roll the Dices Again?")

6. Пишем Бинарный поиск

Бинарный алгоритм – интересное решение поиска в массиве каких-либо данных, если известны некие признаки искомого значения, позволяющие определить, в какой области данных его нахождение более вероятно. Бинарный поиск в разы эффективнее обычного перебора, позволяет найти нужное значение гораздо быстрее и с меньшими затратами ресурсов машины. 

Создаем массив чисел от нуля до какого-нибудь верхнего предела. В нашей программе делаем так, что каждое входящее число будет отличаться от другого на 2. 

Когда пользователь вводит случайное число для поиска, наш код не перебирает все хранимые числа один за другим, а делит весь их массив на две части. По имеющимся признакам – отличие на 2 – принимается решение о том, в какой из двух частей находится искомый объект, после чего поиск повторяется снова и снова, пока его наличие или отсутствие в вашем массиве не будет точно локализовано. 

Преподаватели, ведущие уроки программирования для детей не любят объяснять бинарный поиск. Многим сложно реализовать приложение с ним самостоятельно. Они путаются и теряют интерес из-за неудачи. Тем не менее, это важнейший концепт программирования.


7. Программа «Секундомер»

На вход функция countdown принимает время в секундах. Затем ведет отсчет, пока указанное количество секунд не истечет. После этого выводит произвольное предупреждение. Чтобы создать такое приложение, требуется импортировать соответствующим оператором модуль time. Крайне полезный инструмент, аналогов которому нет в других языках. В них есть свои готовые методы, позволяющие в разных вариантах представлять время (разные форматы, единицы измерения, операции с двумя и более), с датами и временными отрезками, но проще time Пайтон – сложно себе представить. 

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


8. Сортировка с объединением

Напишите этот скрипт, и вы научитесь делать сортировку с объединением. Это полезный инструмент в арсенале любого программиста независимо от задач, которые он решает. 

Есть много готовых алгоритмов сортировки: сортировка методом вставок, сортировка методом выбора, «пузырьковая» сортировка. Сортировку с объединением мы будем осваивать в приоритетном порядке, потому что именно с ее помощью оптимизирую обработку действительно больших объемов данных.

def merge_sort(unsorted_list):

if len(unsorted_list) <= 1:

return unsorted_list

# Find the midpoint and divide the list into two

middle = len(unsorted_list) // 2

left_list = unsorted_list[:middle]

right_list = unsorted_list[middle:]

left_list = merge_sort(left_list)

right_list = merge_sort(right_list)

return list(merge(left_list, right_list))

# Merge the sorted halves

def merge(left_half,right_half):

res = []

while len(left_half) != 0 and len(right_half) != 0:

if left_half[0] < right_half[0]:

res.append(left_half[0])

left_half.remove(left_half[0])

else:

res.append(right_half[0])

right_half.remove(right_half[0])

if len(left_half) == 0:

res = res + right_half

else:

res = res + left_half

return res

unsorted_list = [64, 34, 25, 12, 22, 11, 90]

print(merge_sort(unsorted_list))

Время изучать на практике программирование Python для начинающих и детей 

Надеемся, проекты, которые мы предложили, помогут вам улучшить навыки программирования, если вы не так давно познакомились с миром «Пайтон». 

Если вы заинтересовались этой статьей, потому что записали своего ребенка на онлайн-курсы программирования для детей, то покажите своему сыну или дочке, какие игры можно сделать совершенно самостоятельно. Python – прекрасный первый язык для обучения кодингу для детей, он отлично подходит для школьников.

Главный наш совет – создавайте проекты, которые действительно вознаградят ваши усилия. Если взяться за скучные задания из книги, созданные исключительно для того, чтобы проиллюстрировать какую-нибудь конструкцию языка, то ничем хорошим это не кончится. Без энтузиазма вы не продвинетесь. 

Лучше попробуйте создать проекты, которые пригодятся в жизни. Например, на Python можно запрограммировать чат-бота для Telegram или популярную игру «Кто хочет стать миллионером».

Как сделать чат-бот на Python | Бот в Telegram (Телеграм) на Python | Обучение детей Питону

Создаем игру «Кто хочет стать миллионером» | Задачи Python для детей | Игры на Python

Возможно, вам будет очень трудно, но результат обрадует и замотивирует на дальнейшее обучение. Демократичный мир «Пайтон» приветствует любопытство и живой интерес, идущий от практики. Дерзайте!

Друзья, теперь вы можете поддержать Лайкни https://pay.cloudtips.ru/p/8828f748
Ваши донаты помогут нам и дальше радовать вас полезным контентом.

Нас удобно читать в соцсетях. Подписывайся!

Комментарии

1 комментарий
Чтобы оставить комментарий, войдите на сайт через:
Елена 23.12.2022 06:23
Классная подборка! Спасибо! Разобралась с "Камень, ножницы, бумага", хотя до этого почему-то никогда не получалось.

Будь в курсе

Главные новости, кейсы и статьи за месяц – у тебя в почте:

Отправляя форму, вы принимаете условия обработки персональных данных