Форум сайта python.su
py.user.next я согласен про модули и со всем выше описанным. как пример для начинающего и общего понятия у вас все очень хорошо расписано. допустим на многих учебных сайтах такое решение может не пройти из за времени выполнения на больших списках. (два прохода по списку) вот поэтому и привел алгоритм в один проход.
Офлайн
marvellikТы говоришь “много сайтов таких”. Давай хотя бы один из этих “многих сайтов” разберём просто на конкретном примере. Я не встречал таких сайтов. Очень часто можно перепутать двойной проход с какой-нибудь другой вообще фигнёй. Ну, то есть тебе пишут “тест не пройдён по времени” и ты такой думаешь “блин, а это из-за двойного прохода”. Ты убираешь второй проход и тест проходит, и ты думаешь, что дело было в двойном проходе. А остальной код у тебя чистый по скорости? Ты уверен? Может, какой-то другой участок кода сожрал время или неправильно подобранная архитектура сожрала время вообще в целом?
допустим на многих учебных сайтах такое решение может не пройти из за времени выполнения на больших списках.
Отредактировано py.user.next (Июль 7, 2020 02:13:38)
Офлайн
Как новичок, я считаю, что лучше учиться сразу писать правильный код, чем говнокодить.
Но с другой стороны на простых примерах очень сложно понять, а зачем тебе писать правильно и вообще зачем эти ненужные вещи в виде методов классов и т.п. Однако мне кажется, что во время обучения, когда ты начинаешь писать, что-то более сложное, чем простые примеры или тебя заставят сделать рефакторинг по быстрому, то сам приходишь к пониманию того, что писать правильный код намного удобнее и эти ненужные вещи очень даже нужные и полезные.
По себе скажу, что с иглы говнокода слезть очень сложно.(до сих пор этим страдаю, но я вчерашний школьник мне можно(нет)) Но лучше сделать это на начальных этапах.
Вот есть Java. Учиться с 0 на ней - это ад. Тебя в начале учат, что такое класс, метод, конструктор, модификаторы доступа. Затем наследование, абстрактные классы и интерфейсы ну а потом уже алгоритмизации как таковой. Так вот понять новичку всю эту карусель невозможно(Может я тупой). Но из-за этого писать говнокод на Java сложнее.
Отредактировано Python_newbie13 (Июль 8, 2020 01:33:39)
Офлайн
Python_newbie13
Вот есть Java. Учиться с 0 на ней - это ад. Тебя в начале учат, что такое класс, метод, конструктор, модификаторы доступа. Затем наследование, абстрактные классы и интерфейсы ну а потом уже алгоритмизации как таковой. Так вот понять новичку всю эту карусель невозможно(Может я тупой). Но из-за этого писать говнокод на Java сложнее.
Офлайн
Что тогда является основой?
Просто очень многие вузы, как наши так и зарубежные ставят Питон во главе языков с которых проще начать программировать. Для этого не надо знать полный функционал языка. Можно знать часть его функционала, которую ты понимаешь и писать программы с помощью этого функционала. А в той же Java, что бы написать хоть что-то, надо писать перед этим куски кода, которые новичок не может осознать и понять. Да он может их заучить и написать таки хоть что-то.
Действительно волнует это тема. Так как я сейчас поступил на матфак и хотелось бы знать с чего начать, что бы не страдать на первом курсе. Опыта программирования от силы месяц. За это время потрогал несколько языков (С# Java python). И из них python мне показался самым дружелюбным.
Моя цель минимум - это просто научиться писать сложные алгоритмы. Как пример я сейчас пытаюсь осилить алгоритм который сокращает выражение с переменными т.е пользователь вводит (x+5)*(x-y) и получает
x^2 +5x -x*y - 10. Получается так себе(уже неделю страдаю, но реализовано только умножение и сложение и частично степени,если они целочисленные), но на нем я в первые стал осознано использовать те же классы и они реально удобные. До этого мне этот функционал был вообще не нужен и я на него забивал, а в Java меня бы заставили его использовать иначе ни -ни.
Отредактировано Python_newbie13 (Июль 8, 2020 17:24:47)
Офлайн
Python_newbie13Это какие, например, ВУЗы начинают обучать программистов с питона?
Просто очень многие вузы, как наши так и зарубежные ставят Питон во главе языков
Python_newbie13
Моя цель минимум - это просто научиться писать сложные алгоритмы.
Офлайн
ВУЗ в который я поступил ну и большинство в моей стране тоже( я из Беларуси). В России наверное МФТи может еще. За рубежом University of Waterloo(с их программы не понять питон для новичков или нет)
Цель, зарабатывать деньги, работая программистом(если эта работа включает машинное обучение или другую область, где надо широко использовать математику, то вообще хорошо). Но это глобальная цель. Это как сказать я занимаюсь математикой и хочу доказать гипотезу Римана. Довольно конкретно, но такая цель требует тысячи мелких шагов для ее реализации
И что бы ее достичь надо делать эти маленькие шаги. Для меня первый изучить алгоритмизацию в совершенстве. Я считаю, что это основа на которую потом можно навесить стек определенных технологий(возможно я не прав и алгоритмизация не критична).
Язык программирования помогает алгоритмировать. Я могу нарисовать алгоритм на бумаге. Я могу подставить значение и проверить работает ли он сделав все его этапы. Но если он сложный, то такая проверка займет много времени. А с помощь языка программирования я могу проверить его работоспособность сразу и на большом обьеме входящих значений.
Составлять алгоритмы - нет, не помогает. Проверять их и править - да.
Отредактировано Python_newbie13 (Июль 8, 2020 19:46:24)
Офлайн
Python_newbie13Это называется не сокращение а Expand.
который сокращает выражение с переменными т.е пользователь вводит (x+5)*(x-y) и получает
x^2 +5x -x*y - 10.
Python_newbie13Тут вам на первом курсе потребуется не ЯП а усердие, настойчиовость и умение пораскинуть мозгами.
Так как я сейчас поступил на матфак
Офлайн
Я не хочу лезть в sympy, так пытаюсь сам реализовать часть его функционала. Если не ошибаюсь эта библиотека open source и работает со многими языками в том числе питон? Но за HASKELL, Wolfram mathematica спасибо обращу свое внимание.
Офлайн
Ошибаетесь. sympy это исключительно для питона
Офлайн