Форум сайта python.su
AD0DE412
Спасибо большое ))
Нашла и мне помогло!
Отредактировано Ocean (Март 14, 2021 07:29:27)
Офлайн
OceanТут написан пример. Там даже без функции можно это вычислять, просто сохраняя результат в переменную.
Можно ли как-то избегать такого количества if / else в коде?
OceanЗначит, надо что-то почитать про сложность. Там две штуки: временная и по памяти. Она используется лишь в общих чертах.
Я еще не умею определять вычислительную сложность того или иного решения.
OceanЭто правильно.
Правильно ли, что я выделила проверку високосности года в отдельную функцию или это избыточно и надо было все делать в рамках основной функции?
OceanОшибка в том, что ты пытаешься наугад понять язык, в то время как в нём скрыто многое. Либо тебе лень читать материалы, либо ты вообще не умеешь учиться самостоятельно, даже если находишь материалы. Но в любом случае картина складывается определённая. Если ты думаешь, что на собеседовании не заметят вот это
Буду признательна за любые указания на мои ошибки и плохой codestyle
Oceanили вот этоif month == 2 and is_year_leap(year) == True:
Ocean, то ты глубоко заблуждаешься. Тебе даже ничего не скажут, но если и возьмут, то только чтобы пацанам кофе носить - для развлекухи. К коду тебя вряд ли подпустят даже на пушечный выстрел.# Тест кейсы print(date(31, 12, 2020)) # Правильная дата
Офлайн
да все у нее будет ок .. рано или через некоторое время потому что ..
Бредовая работа. Трактат о распространении бессмысленного труда
Офлайн
Я к тому, что если у неё цель куда-то залезть, а не освоить само искусство, то у неё банально мотивации не хватит, чтобы прочитать всё то, что надо прочитать. Она просто не осилит эти скучные и далеко не всегда весёлые и понятные книги, а их много.
Офлайн
py.user.next
привет и спасибо за разбор
py.user.nextДа, это еще прочту. Оно в планах. Сейчас слишком много еще не знаю и решила, что нужно не распыляться на все сразу. Возможно, что неверно расставила приоритеты.
Значит, надо что-то почитать про сложность. Там две штуки: временная и по памяти. Она используется лишь в общих чертах.
py.user.next
Ошибка в том, что ты пытаешься наугад понять язык, в то время как в нём скрыто многое. Либо тебе лень читать материалы, либо ты вообще не умеешь учиться самостоятельно, даже если находишь материалы. Но в любом случае картина складывается определённая. Если ты думаешь, что на собеседовании не заметят вот это
py.user.nextСпасибо, такая работа не интересует.
Тебе даже ничего не скажут, но если и возьмут, то только чтобы пацанам кофе носить - для развлекухи. К коду тебя вряд ли подпустят даже на пушечный выстрел.
py.user.nextХочу много книг)
Я к тому, что если у неё цель куда-то залезть, а не освоить само искусство, то у неё банально мотивации не хватит, чтобы прочитать всё то, что надо прочитать. Она просто не осилит эти скучные и далеко не всегда весёлые и понятные книги, а их много.
Офлайн
OceanЭто всё так не работает. Нельзя захотеть быть программистом и стать им. Надо учиться. Даже если тебя возьмут куда-то, ты от этого программистом не станешь. Соответственно, когда встанет вопрос, что надо вот сейчас срочно или не срочно что-то написать, ты просто ускользнёшь в сторону, тебя ветром сдует и не будет вообще видно. А работать будет тот, кто умеет делать. Это произойдёт раз, произойдёт два, и так ты быстро окажешься в кофейном отделе, будешь кофеёк разносить чисто, обслуживать. Называться-то ты будешь программистом, а функционировать ты будешь как официантка. Потом тебе скажут “помой кружку и сделай кофе, мы тут программу пишем, или садись писать программу вместо нас”, там ты и поймёшь, кто ты. И уходить будет некуда, так как официанток миллион и все места заняты.
Я понимаю, что скорее всего у тебя уже давно изжога от всех “вхожденцев в ИТ”, но я не хочу “войти в ИТ”, вдохновившись статьей на hh про медиану зп, и рекламной статьей про python за 3 дня.
OceanСначала подойдёт школьная математика, потом нет. Например, в mp3-формате используется быстрое преобразование Фурье. Ты даже если захочешь разобраться, ты не сможешь разобраться в этом, потому что средней школы для этого не хватит даже близко. Там много таких вещей. Вещи, которые ты знаешь хорошо, устроены очень сложно. Это только пользоваться ими просто. Примерно как пользоваться смартфоном в принципе легко, но понять, как он устроен, практически невозможно. А программист - это тот, кто как раз делает такие смартфоны, а не рассказывает про них с умным видом или ловко использует для звонков, видеосъёмки и других вещей.
У меня оказалось, много пробелов в знаниях, в том числе математика и частично английский.
OceanЭта задача не сложная. Решить ты её не можешь потому, что не прорешала до этого кучу других задачек, которые попроще и которые выглядят как бессмысленные. Это целая группа задач на работу с массивами. Маскируются они под сортировку элементов в массиве. По сути же они представляют из себя работу с элементами массива, слежение за его границами и точное позиционирование элементов по их индексам в массиве.
Я уже 3 недели не могу решить задачу про реверс текста в скобках.
OceanДа, действительно, за пять минут я нашёл в Яндексе 1) саму задачу в исходном виде (не пересказ задачи и не имея аккаунта на codesignal) 2) 100500 решений этой задачи другими ребятами. Думаю, ты бы тоже нашла, если бы имела опыт в поиске через поисковые системы (изучила принцип работы поисковых систем и специальный язык запросов каждой поисковой системы). В конце сообщения я приложил ссылки на решения задачи, найденные в Яндексе. Это не все ссылки. По ним можно понять направление мысли.
Думаю, что у тебя бы она заняла не более 5-10 минут.
OceanПрограммированием надо заниматься много и впустую. Это первый этап и он неизбежен. Нужно изучить много технологий, которые ты никогда не будешь использовать и с которыми ты никогда не будешь работать. Таким образом ты обучишься и станешь чувствовать архитектуры. Эффект от этого такой: после десятка изученных напрасно программ изучение современной и нужной программы, архитектурно схожей с теми изученными ранее десятью, проходит в пять раз быстрее и продуктивнее. На примере задачи со скобками можно увидеть как прорешивание глупых, бессмысленных и неинтересных задач на сортировки с процедурой перестановки элементов в массиве очень легко способствует решению переворачивания символов в подстроке в данной задаче. С точки зрения мозга работа с элементами в массиве и работа с символами в строке - это одно и то же, это работа с какими-то объектами в каком-то хранилище объектов, где эти объекты упорядочены друг относительно друга. Ты думаешь одинаково как про то, так и про это. И множество решений из предыдущих задач автоматом срабатывают в новых задачах. Если ты ездила на автобусе по городу, то ты примерно понимаешь, как проехать на поезде по стране. Хоть ты и видишь этот поезд впервые, он такой большой и страшный и неизвестно, как он там поедет дальше, но при заходе внутрь всё как-то оказывается просто, понятно и легко. Это работает опыт многочисленных предыдущих поездок на совершенно другом общественном и необщественном транспорте. Просто он работает незаметно.
Проблема в том, что учусь параллельно с основной работой. Делаю это когда остается время.
OceanПока что ты не можешь вообще найти решение. При этом ты пытаешься найти два. Ты одно не можешь найти. Но пытаешься сделать два раза то, что не можешь сделать ни разу. То есть это первый признак того, что ты пытаешься проскочить время, которое требуется для полноценного изучения и которое никуда не денется, если его проскочить. Другими словами, если ты прочитаешь книжку вскользь и захлопнешь её на последней странице со словами “я прочитала книжку”, то это тебе не поможет. Ты всё так же закроешь книжку, которую не прочитала. И ты можешь ходить потом и рассказывать, что ты её прочитала, все будут кивать, никто не будет проверять, но уметь ничего ты не будешь, а знания у тебя будут “тут помню, тут не помню”. Поэтому если ты читаешь книги и на это уходит очень много времени, даже слишком много времени, то это происходит потому, что это нормально. Нормально, если на книги уходит слишком уж много времени. Это так и должно быть, когда учишься по-настоящему. Когда перестаёшь узнавать из книги хоть что-то, когда в ней не остаётся больше вообще никаких загадок, тогда она и пройдена. Её просто становится незачем читать.
Пока я не умею находить еще одно решение и/или из двух найденных выбирать лучшее.
OceanБольшая часть работающего кода в мире очень плохо написана. Мало кто следит за качеством кода. На это нужно время тратить, а люди время не тратят, а пишут говнокод, который работает как-то вроде правильно. Потом, конечно, это должен кто-то продолжать поддерживать, но они обычно сбагривают свой говнокод другим и сами отваливают, получив все плюшки и сняв все сливки. Их не интересует искусство. Поэтому, когда тебе надо будет что-то узнать, тебе придётся читать говнокод и из него выуживать крупицы каких-то идей. А для этого надо уметь читать говнокод. Чтение говнокода неизбежно. Главное, сама говнокод не пиши, а то привыкнешь.
Плохо читаю чужой код и не всегда уверена, что правильно поняла как именно он работает.
OceanНу, там задача может быть решена несколькими способами, основных направлений два: итеративное и рекурсивное. Но так как задача для новичков, то, конечно, там нужно итеративно её решить и не думать ни об оптимизации, ни об изменении задания в более сложную форму. Просто дурацкая головоломка, которая ничего не даёт. Типа олимпиадной задачки. Олимпиадные задачки ничему не учат. Учат специальные задачи, разработанные так, чтобы научить чему-то. Поэтому и надо искать вузовские лабораторные работы и прорешивать их, так как составляются изначально они для тренировки определённых навыков и групп навыков, а не для тестирования кого-то на что-то.
Именно на codesignal застряла на задаче про реверс в скобках. Думаю, что не знаю какого-то элементарного алгоритма.
OceanНужно читать все классические книги. То есть тебе нужно выявить выдающихся программистов в истории и брать их труды. Хочешь быть хорошим экономистом - бери книжку Карла Маркса и читай её. Хочешь быть хорошим физиком - бери книжку Эйнштейна и читай её. Хочешь быть хорошим психологом - бери книжку Фрейда и читай её.
Буду признательна, если ты подскажешь хорошие с твоей точки зрения книги.
Отредактировано py.user.next (Апрель 16, 2021 22:58:41)
Офлайн
py.user.next
спасибо! )
py.user.nextА за это прямо большое спасибо, потому что я испытывала постоянное ощущение, что я тупая улитка, ползущая по бесконечно удлинняющейся ленте из того, что мне надо знать. Ну и, соответственно, пришпориваю и пинаю себя.
Поэтому если ты читаешь книги и на это уходит очень много времени, даже слишком много времени, то это происходит потому, что это нормально. Нормально, если на книги уходит слишком уж много времени. Это так и должно быть, когда учишься по-настоящему. Когда перестаёшь узнавать из книги хоть что-то, когда в ней не остаётся больше вообще никаких загадок, тогда она и пройдена. Её просто становится незачем читать
py.user.nextВот прямо все так и есть, как в тумане. Мне и ведение конспекта не помогало.
Поэтому очень часто будешь сталкиваться с тем, что, читая книгу на русском, не будешь помнить из неё ничего или всё будет сумбурно, как в тумане. И вот для этого нужно читать исходный материал, который написан на английском языке.
py.user.nextПоняла! Пошла искать такие задачи) Спасибо.
На примере задачи со скобками можно увидеть как прорешивание глупых, бессмысленных и неинтересных задач на сортировки с процедурой перестановки элементов в массиве очень легко способствует решению переворачивания символов в подстроке в данной задаче.
py.user.nextНу я только одно придумала средство как не писать говнокод: собираться с духом, показывать другим, огребать заслуженных люлей и делать выводы. Может есть какие-то еще?)
А для этого надо уметь читать говнокод. Чтение говнокода неизбежно. Главное, сама говнокод не пиши, а то привыкнешь.
py.user.nextЯ итеративно пыталась и не смогла алгоритм сам расписать. Подглядывать не хотела. Типа ж задачка простая
основных направлений два: итеративное и рекурсивное. Но так как задача для новичков, то, конечно, там нужно итеративно её решить и не думать ни об оптимизации, ни об изменении задания в более сложную форму.
py.user.nextВот это для меня откровение. Спасибо за сэкономленное время! Потому что я себе нашла на прошлой неделе тонну олимпиадных задач)
Просто дурацкая головоломка, которая ничего не даёт. Типа олимпиадной задачки. Олимпиадные задачки ничему не учат.
py.user.nextСпасибо за подсказку. Это прямо огонь. Пошла искать лабораторки. Пофиг даже на какой язык они рассчитаны. Буду решать на том, на котором знаю
Учат специальные задачи, разработанные так, чтобы научить чему-то. Поэтому и надо искать вузовские лабораторные работы и прорешивать их, так как составляются изначально они для тренировки определённых навыков и групп навыков
py.user.nextСпасибо большое. Изучаю решения.
Это ссылки на решения задачи про реверс в скобках:
Офлайн
OceanСначала ты будешь читать всё быстро. Это потому, что чтение идёт поверхностно. Глубоко в материал ты погрузиться не можешь, так как у тебя не хватает базовых знаний для этого. Поэтому тебе будет казаться, что книги можно читать быстро. Но пройдёт несколько лет и ты будешь читать книги всё дольше и дольше. Это происходит потому, что у тебя появляются базовые знания и ты потом, читая книгу, прикрепляешь новые знания к базовым знаниям и проводишь новые знания по всем закуткам базовых знаний. Так у тебя новые знания встраиваются в базовые знания. И чем больше ты узнаёшь, тем больше ты замечаешь, как много ты ещё не знаешь. Типа как Сократ. Времени, конечно, уходит на это много, но и эффект от этого мультипликативный.
А за это прямо большое спасибо, потому что я испытывала постоянное ощущение, что я тупая улитка, ползущая по бесконечно удлинняющейся ленте из того, что мне надо знать. Ну и, соответственно, пришпориваю и пинаю себя.
OceanЭти задачи учат тому, как что-то делать на питоне именно. То есть они не учат программированию в общем смысле, они демонстрируют лишь возможности питона.
Я до того как на codesignal поперлась, брала задачи здесь https://github.com/zhiwehu/Python-programming-exercises/blob/master/100%2B%20Python%20challenging%20programming%20exercises.txt
OceanДа, это всё надо пройти, чтобы понять, что этого делать не надо. Это тоже в опыт входит. Поможет в будущем обойти многие говнокурсы, замаскированные под хорошие, и тому подобное.
Где не могла решить никак сама, выписывала себе отдельно задачу, разбирала решение и потом через время к ней возвращалась, когда считала что уже подсмотренное решение выветрилось из головы.
OceanНе, математикой ты занимаешься у математиков, а программированием ты занимаешься у программистов. Ни те, ни другие друг у друга не шарят, как правило. Код математиков - это говнокод натуральный. А математика программистов - это тоже школоло-математика обычно, не более. Ты же не пойдёшь к повару стричься, а к парикхмахеру рецепт круассанов брать. Это не их профили. Может быть, они умеют, но, скорее всего, что-то простенькое только.
Свои дыры в математике тоже нашла через боль, когда пытаться решать задачи из проекта Эйлера.
OceanНет, для этого надо книги читать. Они обычно почищены от говнокода, но не всегда. Есть книги таких авторов, которые делают деньги просто, поэтому в их книгах может говнокод быть, потому что они кого-то нанимают там просто для написания кодов, всё это по дешёвке происходит и так далее. Документации официальные тоже читай, там тоже всё чисто, как правило. Вот ты по Django читаешь материалы, хоть она и нахер не нужна эта Django, но там ты увидишь примеры хорошего кода, поэтому я тебя не отговариваю от того, чтобы ты читала эту доку. Django ты пользоваться не будешь, оно тебе не поможет, но чтение документации оставит хороший опыт, потому что документация у них хорошая. Так ты постепенно сформируешь все критерии и будешь понимать, где код хороший, а где это просто говно в исполнении профессионала. Причём писать он его будет с умным видом очень. Но при этом ты будешь видеть, что это вроде говно какое-то, чем-то отдаёт. В английском есть понятие “пованивающий код”. wiki. smelling code
Ну я только одно придумала средство как не писать говнокод
OceanОлимпиадники участвуют в олимпиадах. Программ они делать не умеют. Они участвовали там и вон там и медаль такую он там выиграл и поездку куда-то там, но спроси его, чем он пользуется каждый день - все его программы чужие. Другое дело, если человек вуз прошёл, он не отсвечивает нигде, но на его коде крутится прошивка в каждом боинге в мире.
Потому что я себе нашла на прошлой неделе тонну олимпиадных задач)
Отредактировано py.user.next (Апрель 17, 2021 00:13:03)
Офлайн
py.user.nextПоняла. Рефлексию в сторону и буду учиться и писать код пока не наберу достаточно опыта.
Если же ты будешь учиться-трудиться, то через какое-то время (долгое время) у тебя наберётся необходимая масса опыта и ты сможешь преодолеть этот непреодолимый ранее волновой вал. И когда ты его преодолеешь, тогда ты и поймёшь, что теперь ты можешь, наконец-то, заняться программированием нормальным, а не фигнёй какой-то поверхностной. Там ты начинаешь учиться по-настоящему.
py.user.nextчто лучше читать и делать для изучения программирования в общем смысле?
Эти задачи учат тому, как что-то делать на питоне именно. То есть они не учат программированию в общем смысле, они демонстрируют лишь возможности питона.
py.user.nextПоняла. Чебурашек вычеркиваю, математику у математиков учить буду. Спасибо!)
Есть такая специальность “экономист-программист” или около того. Ну, это и не экономист, и не программист. Чебурашка.
py.user.nextУвидела, что вы ссылку кидали на эти книги
Нет, для этого надо книги читать. Они обычно почищены от говнокода, но не всегда.
Отредактировано Ocean (Апрель 17, 2021 02:46:53)
Офлайн
OceanЗдесь подборка советов, которые я давал в разные годы.
что лучше читать и делать для изучения программирования в общем смысле?
OceanДа, я это писал всё уже здесь. Пройдёшь по советам, там это прочитаешь. Блок-схемы - это не всё. Вот я писал вот это в 2018-м году, что я буду сейчас это второй раз сюда переписывать. Во, и тут ещё в августе 2020-го писал то же самое. Не буду же я это плодить ещё в этом топике.
Там учили, что до того как садиться писать код, надо блок-схему решения составить. А потом уже глядя на блок-схему кодить. Получается чуть дольше, но по ощущениям мне помогает структурировать решение
OceanКоторые создали что-то в своей жизни, кроме книги этой, в которой они авторы.
Каким авторам мне стоит доверять?
OceanДа, я сам регулярные выражения изучал, выучив чуть ли не наизусть документацию к ним в питоне. Конечно, там покрыты не все вопросы регулярных выражений, но для начала самое то. Дальше ты уже переходишь к материалам, а что это за автоматы и изучаешь уже по книжке про компиляторы их.
Я и официальную доку по python читаю
Отредактировано py.user.next (Апрель 17, 2021 04:54:59)
Офлайн