В качестве своего первого информативного поста, хотел бы сделать небольшой обзор полезного сайта для начинающих и уже опытных программистов на python - сheckio.org, который создал Александр Лябах
На данном ресурсе вы найдете множество задач для программистов решить которые надо используя язык Python. Задача состоит в том, чтобы написать функцию, принимающую определенный набор данных и обрабатывающая их. На выходе проверяется работоспособность данной функции и насколько правильные ответы она нам выдаст.
Как пример простейшая задача http://www.checkio.org/mission/info/addition/. Читаем нехитрое условие и понимаем что надо нам написать функцию которая будет получать массив целых чисел и выдавать нам их сумму. Вроде все понятно, так что жмем "Solve it Now" и попадаем в редактор кода с неким шаблоном, вроде
def checkio(values):
'sum list of values'
if __name__=='__main__':
assert checkio([1, 1])==2, 'First'
assert checkio([5,5,5]) == 15, 'Second'
assert checkio([7]) == 7, 'Third'
print 'All ok'
Наша задача написать тело функции checkio() которая потом будет проверятся. Навскидку, как настоящие Сишники мы можем наваять такое
def checkio(values):
'sum list of values' result = 0
for i in range(len(values)): result += values[i] return result
Запускаем его как в простом интерпретаторе кнопкой "Run code" и наблюдаем
First Done
Second Done
Third Done
Здесь мы можем написать свои тесты или ставить print для дебага. Можно и не использовать данный редактор, а писать в своей любимой IDE или обычном блокноте. Это по сути редактор с интерпретатором.
Увидев что все сработало, нажимаем радостно "Check task" и так как подводных камней в данной задаче особо нет, то увидим радостное поздравление. То есть сервис берет нашу функцию checkio и гоняет ее на разных тестах. Тут стоит уточнить, что тесты есть базовые и скрытые. Базовые, это те что мы видим в начальном шаблоне, ну а скрытые, понятно, не увидим. Скрытые тесты сделаны, чтобы не решали задачи используя банальный словарь. Если мы сделали задачу, как нам кажется верно , но закралась ошибка и скрытый тест ее выявил, то мы увидим Fail:ex и после этого думаем дальше.
Но вернемся к тому что задачу мы решили. И увидев поздравительное окошко мы может выразить понравилась нам задача или нет. также мы можем опубликовать задачу и взяться за другую, или посмотреть другие решения уже осиливших данный таск. И тут мы подошли к главной особенности checkio.
Checkio это не только набор задач, но и своеобразная социально регулируемая система. То есть мы не просто решили задачу, но и опубликовали ее. И после публикации ее могут видеть другие участники этого соцсоревнования. И будут оценивать и комментировать ваши решения, так же как и вы решения других. За решения задач вам начисляют баллы в зависимости от сложности. Также если вы написали красивое, легко читаемое решение и оно нравится другим, то ваши балу еще увеличатся. Такая вот нехитрая, но действенная система, которая поощряет написание аккуратного и читаемого кода.
Теперь мы понимаем что в данном примере с таким кодом, который слабо похож на Python, популярности мы вряд ли завоюем. Поэтому закрываем поздравление и делаем код покрасивей. Хотя бы так.
def checkio(values):
'sum list of values' return reduce(lambda x, y: x+y, values)
Уже приятней. Конечно, можно сделать решение еще проще и короче, и понятней. Но это уж сами. Публикуем, смотрим решения других и голосуем за понравившиеся решения. Далее берем следующий таск и вперед.
На сайте присутствуют множество задач на различные тематики, как регулярные выражения, так и работа с датами. Также кроме простых обучающих задачек есть и посложней, где придется вспомнить алгоритмы по графам, или перелистать снова учебник математики.
Кроме обычных задач, есть игровые задания, такие как Тетрис, Лайнс, Сапер и 5-в-ряд. В них нам надо также написать определенную функцию, но вызываться она будет много раз. Например, в Сапере нам дается массив с частично открытым полем, наша функция решает куда сходить или указывает мину, сервис проверяет ваш ход. Если ход верный, то продолжаем играть пока не откроем все поле. Эти задания на мой взгляд наиболее интересны. Особо стоит отметит 5-в-ряд - это классическая игра рендзю и наша задача написать функцию, которая будет описывать алгоритм игры. То есть пишем бота с которым потом можем сыграть или натравить его на других ботов и радоваться победе или думать над новым решением.
Кому нужен данный сайт? В первую очередь начинающим программистам, которые могут попрактиковаться от простеньких задач к сложным, и изучить базовые модули. Ведь очень часто когда люди начинают изучать программирование или новый язык, то думают - "а что бы мне написать, дайте мне задачу". Тут у вас полный простор и есть возможность не просто решить задачу, но и потом сравнить свое решение с другими, что позволит увидеть различные трюки и хитрости языка, а также понять как надо или как не стоит писать код.
Для продвинутых программистов данный сайт тоже будет интересен. Ведь когда корпишь месяцами на одним проектом, который требует тщательной отшлифовки и надо писать и писать достаточно стандартные вещи. То хочется отвлечься и вспомнить Кнута с его алгоритмами. Данные задачки помогают размять мозги и не дать им закостенеть на однородной работе.
Ну и тем кто отошел от программирования, по различным причинам, но не хочет терять навыки или просто нравится писать хороший код, также будет интересно размяться.
Ну и тем кто отошел от программирования, по различным причинам, но не хочет терять навыки или просто нравится писать хороший код, также будет интересно размяться.
Вот краткая, немного скомканная пробежка по checkio. Сайт постоянно пополняется новыми задачами и идеями. Так что рекомендую и приглашаю на Checkio.
Комментариев нет:
Отправить комментарий