Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 7, 2017 18:08:52

droncheck
Зарегистрирован: 2017-04-03
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование на Python: начало

Всем привет, видел в этом разделе похожую тему, поэтому пишу именно сюда, сорри, если не по теме. Я - начинающий питонист от слова совсем. На данный момент прошел курс на степике, сейчас читаю Лутца “Изучаем Python, 4-е издание”. Хочу писать много кода и делать это красиво и правильно, потому прошу совета у вас. Как эффективно развиваться? С чего начинали сами, какие интересные цели и задачи себе ставили? Что в целом можете посоветовать новичку? Я, например, чувствую, что мне катастрофически не хватает практики. Благодарен буду любым советам и подсказкам. Готов много читать и писать, но хочу делать это правильно, чтобы потом не было мучительно больно Заранее спасибо!

Офлайн

#2 Апрель 7, 2017 18:32:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Программирование на Python: начало

droncheck
Вы не сможете ставить сами себе задачи, а если сможете, то от этого не будет никакого толка. Программист, как правило, работает по ТЗ, т.е. он не сам формулирует задачу так, как ему хотелось бы её видеть, а воплощает чьё-то чужое виденье. Когда вы будете сами себе продюсером, вы невольно будете подстраивать требования задания под свой опыт и свои навыки, и у вас все будет получаться хорошо и красиво, но далеко от реальности. Чтобы приобрести опыт, вам нужны задачи, о которых вы сейчас даже и не подозреваете, что они такие есть, нужны задачи, которые вы понятия не имеете как вообще решать и какие технологии применять. Понятно, что вы не сможете сами себя так озадачить. Читайте учебники, натаскаетесь в стандартных задачках, идите работать по профилю. Вот собственно и все варианты приобрести практику.



Офлайн

#3 Апрель 7, 2017 18:36:53

droncheck
Зарегистрирован: 2017-04-03
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование на Python: начало

Спасибо за совет, а не подкинете пример такой задачи для затравки?

Офлайн

#4 Апрель 7, 2017 18:48:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Программирование на Python: начало

droncheck
Спасибо за совет, а не подкинете пример такой задачи для затравки?
Нууууууууууууууууу, напрнимер
Знаете, что такое Norton Commander? Сделайте что-то подобное на питоне.



Офлайн

#5 Апрель 7, 2017 19:16:31

droncheck
Зарегистрирован: 2017-04-03
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование на Python: начало

FishHook

FishHook
Знаете, что такое Norton Commander? Сделайте что-то подобное на питоне.
Интересно, спасибо, а по поводу литературы не подскажете? У того же Лутца, например, в “Изучаем Python” очень мало задачек, в основном теоретические вопросы. На данный момент в списке обязательного к прочтению у меня “Изучаем Python”, “Программируем на Python” и Лучано Ромальо “Python. К вершинам мастерства.”

Офлайн

#6 Апрель 7, 2017 19:26:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Программирование на Python: начало

droncheck
Питон - это только язык программирования, он сам по себе не дает ответы на вопросы. Программирование - это прежде всего алгоритмирование, вы не найдете литературу, которая охватывала бы и изучение питона и изучение программирования как такого. Ищите книги по программированию, а не по питону. А питон - это только один из инструментов.



Офлайн

#7 Апрель 7, 2017 20:06:44

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2828
Репутация: +  185  -
Профиль   Отправить e-mail  

Программирование на Python: начало

> На данный момент в списке обязательного к прочтению у меня “Изучаем Python”, “Программируем на Python” и Лучано Ромальо “Python. К вершинам мастерства.”

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



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Апрель 7, 2017 20:27:09

droncheck
Зарегистрирован: 2017-04-03
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование на Python: начало

Rodegast
Ты не с того конца начал. Начинай с практики, делай аналог NC. Если NC для тебя слишком круто, то сделай для начала функцию которая просто будет файл копировать. С ней справишься?
Спасибо, да, справлюсь. Я сам чувствую, что практики не хватает, потому и создал эту тему.

Офлайн

#9 Апрель 8, 2017 02:19:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9999
Репутация: +  857  -
Профиль   Отправить e-mail  

Программирование на Python: начало

Можешь использовать олимпиадные задачи
http://acm.timus.ru/problemset.aspx
Они не так хороши для развития, но в них есть автоматические проверки, частично заменяющие препода.

Но лучше скачать лабораторные работы настоящих вузов и прорешивать их, потому что они отличаются от олимпиадных задач тем, что они сделаны таким образом, чтобы сформировать навыки программирования у обучающегося. Олимпиадные задачи такими не являются чаще всего. В вузовских заданиях тебя будут именно дрючить на определённый навык, пока ты не научишься.

И вот потом ты уже можешь пробовать повторить реально существующие программы, потому что как бы то ни было, тебе иногда придётся что-то в них делать, для чего нужны именно навыки, а навык быстро получить нельзя - только через многократное прорешивание одного и того же. Как в школе дети сидят и выводят буквы в тетради целый день, так и в программировании нужно сидеть и делать одно и то же целый день. А потом ты раз и что-то быстро записал.

droncheck
С чего начинали сами, какие интересные цели и задачи себе ставили?
Брал лабораторки из Интернета и делал десятки задач на поиск корней разных степеней и значений тригонометрических функций типа синуса. Потом с книги брал задачи на движение треугольника вокруг препятствий и писал рекурсивный обход препятствия. Потом задачки про матрицы, типа там заполнение числами по спирали. Вот этого всего было много-много и смысла не было видно, зачем это делать.

А вот вчера скачал словарь для StarDict'а, а он не открывается, залез в этот словарь, а он в теговом формате каком-то (типа xml). Словарь большой, видно, где слово и где его перевод, вручную им можно пользоваться, но StarDict умеет ведь сканировать и довольно удобный для чтения текстов в браузере, поэтому хочется именно к нему подключить словарь. Вот и пришла мысль “а не написать ли конвертер к этому?”, это первая мысль, вторая мысль “а я смогу его написать вообще?”. Полез в обычные словари, которые работают уже, но они какие-то странные, состоят из нескольких файлов, полез внутрь этих файлов, стал в 16-ричном виде смотреть эти файлы, догадываться, что там за что отвечает. Чисто догадками предположил, что в файле сначала идёт слово, потом нуль-символ, потом 4-байтовое число и ещё одно 4-байтовое число. Потом проверил на всех ли словах так, оказалось, что на всех. Потом стал выяснять, а что это за два числа, предположил, что это позиция начала и длина от неё. Так и оказалось. В результате анализа я понял, как в рабочем словаре проиндексирован файл переводов с помощью отдельного файла с индексами. Дальше встал вопрос “а как разложить неработающий файл, где всё в тегах?”. Стал его читать, а там куча каких-то тегов дополнительных, то есть этот формат файла не такой простой, как кажется изначально. Следовательно, его надо будет не просто представить в виде xml, а, возможно, ещё почистить перед этим каким-нибудь умным способом. Понимаешь, да? Вот оно программирование пошло - надо уметь составлять алгоритм для парсинга, не имея никаких модулей для парсинга. Надо просто проанализировать текст через конечный автомат или что-то в этом роде. Поэтому я что сделал, я пошёл и стал искать этот словарь в Интернете, чтобы найти уже готовый и решить эту проблему, потому что у меня сейчас нет времени писать конечные автоматы для словаря, в котором ещё хрен знает что может оказаться и где надо будет ещё что-то писать. Но вот эту всю информацию я запомнил. Теперь я знаю, что нужно получить в результате, чтобы сделать хороший словарь. На будущее я понял, что если я что-то найду, а оно не подойдёт и в Интернете его тоже не будет, то мне надо будет написать конечный автомат по приготовлению формата к созданию индексированного словаря для StarDict'а. Писать это буду на питоне, но питон вообще к этому отношения не имеет. В книжке по питону ты не узнаешь, как писать конечные автоматы, потому что это целый слой из теории программирования, который относится ко всем языкам одинаково.

Это к чему всё - вот если ты будешь писать какой-нибудь NC, то ты будешь его писать-писать-писать, а потом раз и встал на какой-нибудь такой шпуньке, где надо уметь программировать. А ты её написать не можешь, а из-за неё из-за одной вся программа не пишется в итоге. Хочешь сидеть с полупрограммой, которая в целом не работает, - не изучай матрицы, синусы, работу со строками и прочие базовые вещи. Только ты потратишь два месяца или четыре, а потом раз и всё, и дальше ты её не можешь писать, потому что не умеешь какую-то мелочь делать.



Отредактировано py.user.next (Апрель 8, 2017 03:15:56)

Офлайн

#10 Апрель 8, 2017 17:39:02

droncheck
Зарегистрирован: 2017-04-03
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование на Python: начало

py.user.next
Большое спасибо, займусь лабораторными

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version