Живой интерес – первое, что надо поддерживать, когда речь заходит о занятиях Python для детей. Именно поэтому в предыдущей статье цикла мы предложили ряд проектов, которые привлекут внимание ребенка и станут прекрасным «полигоном» для освоения тех или иных конструкций кода. В этом посте – ряд новых идей.
При обучении детей основам программирования встает вопрос о конкретном языке, с которого стоит начинать знакомство с миром алгоритмов. Python – отличный вариант. Ничего не мешает разрабатывать на нем любые приложения. Вот некоторые распространенные типы программ, которые пишут на Python дети, школьники и новички постарше:
- боты (для Telegram, например);
- парсеры и сайты, наполненные методом веб-скрапинга;
- приложения в области анализа данных, машинного обучения, визуализации данных;
- веб-сайты, обычно с использованием фреймворков для Python, вроде Flask, Django;
- игры. Для них в Python часто используется другая библиотека: Pygame;
- наконец, приложения для смартфонов.
«Пайтон» в веб-разработке
Язык Python хорошо интегрирован в веб. Есть эффективные библиотеки, в частности, Django, Flask и другие. С их помощью можно соорудить серверную часть веб-приложения (т.е. «кухню» и логику сайта, не видимую глазу), а далее этот «бэкенд» хорошо уживается с любым «фронтендом». Создание несложного веб-ресурса – захватывающий проект для детей на Python. Попробуйте и посмотрите на их реакцию!
Браузер напрямую Python интерпретировать не может, придется воспользоваться фреймворком. Подойдут уже упомянутые Django и Flask, но есть много других.
Проект №1. Доступ к файловой системе ПК с помощью смартфона
С помощью Python вы можете многое. Например, управлять файлами, размещенными на компьютере через смартфон. Для начала создайте файловый сервер. На ПК из консоли с установленным дистрибутивом Python перейдите в папку, к которой желаете открыть доступ. Запустите следующие команды:
# версия Пайтон >= 3
python3 -m http.server
# если версия языка >= 2 and < 3
python -m SimpleHTTPServer
# по умолчанию порт: 8000
Вот и все. Этого достаточно, чтобы открыть вашу папку для всех устройств, действующих через ваше интернет-подключение. А теперь просто выйдете в интернет через тот же wi-fi. А можете, наоборот, подключиться из ПК к точке доступа на мобильном. Теперь откройте браузер смартфона и занесите в адресной строке такой путь: <your-computer-ip>:port. Проверьте локальный IP.
Допустим, он у вас 156.981.09.244. Допустим также, что порт у вас оставлен по умолчанию. Вам теперь нужно в браузере просто ввести 156.981.09.244:8000. Все сделали верно? Тогда будете вознаграждены тем, что увидите вашу компьютерную папку в браузере смартфона. А представляете, как эта «магия» понравится подростку, если такое задание дать на курсах Python для подростков?
Автоматизация и написание скриптов
Если ваш ребенок сделал первые шаги, например, на онлайн-курсах для детей по программированию на Python и это занятие его затянуло, юный программист захочет автоматизировать буквально все. Не волнуйтесь, Python его не подведет. Огромное количество задач можно осуществить всего лишь 4-5 строками кода. Задачи самые разные, от запуска скриптов по расписанию до написания напоминалок, позволяющих вам или вашему ребенку не забыть скачать те или иные новые видео из YouTube.
Проект №2. Конвертация из CSV в JSON
Перевести данные из CSV в формат JSON на Python можно с помощью всего лишь одной команды. Используйте следующий код:
python -c "import csv,json;print json.dumps(list(csv.reader(open('teach_children.csv'))))".
По началу синтаксис команды можно даже не понимать. Пусть учащийся подставит название своего файла в соответствующий участок кода.
Просто, не правда ли? Да, несложно. И поможет сберечь главный двигатель обучения. Речь о живом интересе к процессу и результату.
Создание игр: Python для детей и подростков
А сейчас мы подходим к «козырной карте» любого, кто обучает детей программированию на языке Python. Речь о создании игр: все дети любят играть. В этом-то деле и пригодятся библиотеки Pygame, Kivy. В несложных проектах можно обойтись и без них.
Проект №3. Игра «Виселица»
Ниже я привожу довольно простой скрипт, который позволяет играть в «Виселицу» из консоли разработчика. Кстати, код можно сильно сократить (пусть это станет для вас дополнительным упражнением). Знаком «решетка» в Python выделяются комментарии.
# our_game.py
#подключаем модуль времени time
import time
import random
turns = 10
print "Привет! Давайте поиграем в виселицу! У вас будет " + str(turns) + " ходов!"
print ""
# делаем выдержку по времени
time.sleep(0.5)
# массив загадываемых в игре слов
wordList = ["pixel", "школа", "программирования", "хорошая"]
word = random.choice(wordList)
guesses = ''
# цикл вплоть до исчерпания ходов
while turns > 0:
wrong = 0
for char in word:
if char in guesses:
print char,
else:
print "_",
wrong += 1
print("\n")
if wrong == 0:
print "Вы победили :)"
break
guess = ''
if len(guess) < 1:
guess = raw_input("Загадайте букву или введите правильное слово: ")[0]
guesses += guess
if guess not in word:
turns -= 1
print "Не верно"
print "У вас осталось", + turns, ' ходов!'
if turns == 0:
print "Вы проиграли :("
Парсинг сайтов: урок Python для детей
Этот проект для школьников будет несколько «на вырост», но тот, кто справился со всем остальным, может попробовать и его. Каждый день мы работаем с самыми разными данными, разбросанными по разным веб-ресурсам. Только представьте, насколько было бы круто легко свести их вместе и переработать. Именно этой задаче и подчинена такая область приложения языка Python, как скрапинг, или парсинг.
Задача эта на «Питоне» не представляет большой сложности для профессионального программиста, так как есть специальные библиотеки и они хорошо продуманы. Однако если речь идет о Python для подростков, детей или начинающих, придется попотеть. Но тем заманчивее результат. Обычно данные в веб представлены хаотично. С такими великолепными фреймворками, как Beautiful Soup и Scrapy несложно информацию, во-первых, получить с сайтов, во-вторых, организовать и привести к единому виду.
Проект №4. Получаем стоимость валют по сравнению с USD
Сначала парсим данные.
import requests
from bs4 import BeautifulSoup
URL = "https://www.x-rates.com/table/?from=USD&amp;amount=1&quot;
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html.parser')
ratelist = soup.findAll("table", {"class": "ratesTable"})[0].findAll("tbody")
for tableVal in ratelist:
trList = tableVal.findAll('tr')
for trVal in trList[:6]:
print(trVal.text)
Итого у нас возвращается: чему равны единицы других валют по сравнению с 1 USD.
Анализ данных и машинное обучение: Python для детей
Эти две области сейчас в тренде во взрослом мире. Данные технологии – будущее IT-сферы. Python хорошо «заточен» под манипуляции с данными, их анализ и сложные алгоритмы обработки информации. Парсинг и визуализация обработанных сведений упакованы в хорошие готовые функции языка, что позволяет реализовать соответствующие задачи одной функцией или парой строчек кода.
Тут тоже есть специальные Python-библиотеки: NumPy, Scipy, Scikit-learn. Создатели языка Python задумывались о его потенциале в области машинного обучения. По сравнению с другими языками задачу построения, например, нейросети на Python решить несложно, к тому же удается без обычных проблем обработать феноменально большой объем данных.
Помочь в этом сможет еще одна группа фреймворков: NumPy, Pandas, Matplotlib, Seaborn. Сегодня большинство задач в сфере машинного обучения решается на Python. Причина этому – «компактность» языка: на нем даже довольно сложные алгоритмы пишутся в 20-40 строк.
Создание простой нейросети подойдет в качестве увлекательного урока Python для детей. Представляете, как будет интересно?
Проект №5. Обучаем нейросеть правильно определять, какую цифру нужно подставить в таблицу
Простейшая нейросеть, представленная ниже, определит тенденцию и логично заполнит поле, помеченное знаком вопроса. Прекрасный пример, на котором ребенок сможет понять, что такое нейросеть.
from numpy import exp, array, random, dot
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
training_set_outputs = array([[0, 1, 1, 0]]).T
random.seed(1)
synaptic_weights = 2 * random.random((3, 1)) - 1
for iteration in xrange(10000):
output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
print 1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights))))
В статье мы «пробежались» по ряду идей, с помощью которых ваш ребенок сможет реализовать свои навыки программирования на Python. Но это далеко не все, что можно себе представить. Надеемся, вы узнали что-то новое.
Ваш ребенок еще не пробовал программировать? Запишите его на курсы Python для детей. Возможно, именно это дело придется ему по душе! А как он узнает, если не будет пробовать?
Обучайте ребенка Python. Различных вариантов, как это можно сделать, предостаточно. Есть курсы Python для детей, которые пока не программируют совсем. Есть аналогичные курсы для подростков, уже знакомых с основами кодинга.
Можно начать знакомство с Python при помощи бесплатных видеоуроков, а можно сразу записаться в школу программирования для детей и подростков.
Выбирайте подходящий вам вариант и спешите совершенствовать знания востребованного и перспективного языка Python, на котором можно даже написать программу управления космическим спутником!