Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

xdgadd

ML/Python/Cpp
  • 42
    вклад
  • 5
    вопросов
  • 64
    ответа
  • 38%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как на python сделать таймер?

    sergey-gornostaev
    Сергей Горностаев @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Да можно так же:
    from time import monotonic
    
    t = monotonic()
    while True:
        if monotonic() - t > 10:
            t = monotonic()
            print('tick')
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Питон как правильно тестировать класс модулем unittest?

    Sputterspark
    Elmo Sputterspark @Sputterspark
    Если код состоит из говна и палок, то нужны три теста - на говно, на палки и интеграционный.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как вывести div только на определенной странице?

    Roman K @deliro
    лол
    {% if request.path != '/test/' %}
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Где поискать опенсорс проекты на С++?

    myjcom
    Roman @myjcom Куратор тега C++
    github https://github.com/search?l=C%2B%2B&q=opensource&t...
    sourceforge https://sourceforge.net
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Где поискать опенсорс проекты на С++?

    Nipheris
    Станислав Макаров @Nipheris Куратор тега C++
    А как вы искали, если не секрет? Я хочу узнать, как искать так, чтобы ничего не найти.

    Запрос "c++ open source projects" даёт первой же ссылкой набирающие популярность C++-проекты на гитхабе, среди которых TensorFlow, биткоин, OpenCV, Электрон, Solidity и прочие монстры индустрии. Время поиска - ~20 секунд.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Что будет с объектом если вызвать несколько раз его конструкторы?

    fshp
    Максим Мосейчук @fshp
    Вторая запись это не вызов конструктора, а оператор присваивания.

    Сначала создавасться новый временный объект через второй конструктор (т.к. конструктор является implicit, то допустимо неявное преобразование из int в CClass). Затем у первого объекта вызовется оператор присваивания с временным объектом в качестве параметра.

    В C++ без сложных манипуляций невозможно второй раз вызвать конструктор.

    Фактически ваш код эквивалентен этому:

    CClass obj(); // на самом деле так писать нельзя, это не вызов конструктора а объявление функции
    
    obj = CClass(1);
    Ответ написан более трёх лет назад
    32 комментария
    32 комментария
  • Как сделать перестановки с заменой в python?

    cronk
    Роман Володин @cronk
    Делаю графику для кино. Роботы, взрывы, пиу-пиу!
    string = "ABC"
    for s in string[::-1]:
        print(string.replace(s, "-"))

    Результат
    AB-
    A-C
    -BC
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Оцените первый проект?

    sim3x
    sim3x @sim3x
    Много глобальных переменных
    u' в питоне3 не используется
    Имена переменных в транслите
    Много магических чисел
    pass используете без понимания зачем он
    Не все ошибки обрабатываются
    Нет логирования
    Стоит изучить парадигмы функционального программирования - так будет проще писать код
    Бесконечный цикл внутри скрипта - плохо, лучше пусть запуском занимается systemd

    Для первого проекта - отлично
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как организовать многоканальное использование бота Telegram?

    ivankomolin
    ivankomolin @ivankomolin
    Ну тут дело не в боте, а в реализации демона, который слушает соединение с ботом.
    В потоке получения команды от бота делайте только дешевые операции. Например, отправляйте задания в очередь и отдельными потоками обрабатывайте задания из очереди.
    Ответ написан более трёх лет назад
    7 комментариев
    7 комментариев
  • Обращение к ячейки массива не по "числу"?

    longclaps
    longclaps @longclaps
    c++ map контейнер
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как раскрыть parameter pack для передачи типов в шаблонную функцию?

    Евгений Шатунов @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Ошибка, которую видно в коде, это ошибка использования parameter pack.
    В коде у тебя видно раскрутку списка параметров, в ходе которой список неизбежно станет пустым и произойдет попытка инстанцировать вызов mapClasses<>(). И именно эта попытка приводит к ошибке.

    И эту ошибку можно убрать. Для этого у нас сейчас есть аж целых три способа.

    Способ первый - C++17 constexpr if.
    template< typename U, typename... args >
    void mapClasses()
    {
    	// ...
    	if constexpr( sizeof...( args ) > 0 ) // Все понятно и без слов.
    	{
    		mapClasses<args...>();
    	}
    }


    Способ второй - частная специализация класа/структуры.
    template< typename... args >
    struct Map;
    
    template< typename U >
    struct Map<U>
    {
    	static inline void mapClasses()
    	{
    		// ...
    	}
    };
    
    template< typename U, typename... args >
    struct Map<U, args...>
    {
    	static inline void mapClasses()
    	{
    		Map<U>::mapClasses();
    		Map<args...>::mapClasses();
    	}
    };


    Способ третий - самый коварррный - использование SFINAE в классическом его смысле.
    template< typename U >
    void mapClasses()
    {
    	// ...
    }
    
    // SFINAE тут (аргумент функции) выключит вывод шаблона при пустом списке полей.
    // В этом случае доступным остается только верхний экземпляр функции.
    template< typename U, typename... args >
    void mapClasses( char (*)[ sizeof...( args ) > 0 ] = 0 )
    {
    	mapClasses<U>();
    	mapClasses<args...>();
    }
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Интересные и хардкорные задачи на Python?

    Антон Коновалов @akonovalov
    Программист на компьютере
    Много всяких подобных можно найти, если поюзать поиск.
    От себя рекомендую codewars - задач на алгоритмы - тьма тьмущая, сотни! Криптовалютных задачек там не встречал, но задачки на создание своих брайнфакоподобных интерпретаторов там точно есть.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Нейросеть в jupyter notebook?

    kzoper @kzoper
    Можно
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Почему не запускается selenium (python) на сервере?

    Roman K @deliro
    Не могу понять, ты пытаешься exeшник запустить на линуксе?

    P.S. Для сервера без монитора нужно эмулировать монитор (xvfb)
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как лучше парсить +300k товаров?

    sergey-gornostaev
    Сергей Горностаев @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Требуется технология прямых рук, судя по всему.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как реализовать подобное (return return 1)?

    longclaps
    longclaps @longclaps
    Никак.
    Чтобы вернуло именно из другой функции, именно и нужна эта другая функция, а нет её.
    Чтобы вернуло 1, достаточно return eval("1"). eval вообще может лишь вычислять выражения, что-то более сложное делает exec.
    Если трудно описать зачем - это тухлый признак: не можешь вербализовать - не сможешь и запрограммировать.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как создать дерево, каждая вершина которого содержит указатель на элемент данных void*?

    tsarevfs
    tsarevfs @tsarevfs Куратор тега C++
    C++ developer
    Если это не лаба, которую нужно было сдать вчера, то стоит начать с чего-то более простого (в противном случае вам к фрилансерам). Возможно что-то из этого вы уже делали, но из вашего вопроса кажется, что вы не знаете с чего начать. Задание сложное для начинающего, будьте готовы потратить на него несколько дней из новогодних праздников.

    Структуры. Ключевое слово struct. Именно они будут элементами. Прочитайте про них.
    Структуры данных на указателях. Дерево -- сложная структура. Начните с односвязного списка. Примеров куча в сети. Тут вам не обойтись без функций. А еще лучше написать класс LinkedList.
    Итераторы. Когда написан список, попробуйте разобраться с итераторами. Написать итератор для списка не сложно, но тут уже нужно иметь минимальные представления о классах, методах, перегрузке операторов.
    Если сложно, то можно обойтись без них, задача не сильно пострадает.
    Деревья. После того как написан список, разобраться с деревьями будет проще. Забейте на "элемент данных void*", пусть у вас это будет то же что и в любом понравившемся примере из интернета. Тем более, в C++ стараются избегать void*.
    Обход дерева. Итераторы предполагают, что вы сможете перебирать элементы дерева в некотором порядке. В основном используют 2 подхода: обход в глубину и обход в ширину. Первый несколько проще реализовывать с помощью рекурсии. Для второго может потребоваться структура данных очередь, которую будет полезно написать на основе односвязного списка.
    Дерево поиска. Вас просят сделать так, чтобы меньшие элементы были ближе к корню дерева. Есть структура данных "куча"(обычно бинарная куча) , которая это обеспечивает. Но на практике чаще используют деревья поиска, которые тоже это гарантируют. Это достаточно непростая тема, к ней можно вернуться как закончите с остальным.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Python на лету, консоль и вывод?

    longclaps
    longclaps @longclaps
    python jupyter
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как вытаскивать ссылки с сайта, с помощью питона?

    Анатолий @trofimovdev
    Python
    Сделайте парсер ссылок с помощью Beautiful Soup.
    Передавайте новые ссылки в urlopen.
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как проверить список на пустые значения?

    sergey-gornostaev
    Сергей Горностаев @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Если надо проверить, чтобы в списке было что-то кроме None
    if len([i for i in list if i is not None]) > 0:
        ...

    Если не предполагается, что в списке будут элементы трактуемые как ложное значение, то можно проще
    if any(list):
        ...

    Соответственно, если нужно убедится, что все элементы списка истинные
    if all(list):
        ...

    И ради всех богов, не используйте в качестве имён переменных имена функций из стандартной библиотеки.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • Следующие →
Самые активные сегодня
  • UthvfyV
    • 11 ответов
    • 0 вопросов
  • Mike_Ro
    Михаил Р.
    • 6 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 6 ответов
    • 0 вопросов
  • tolmasoft
    • 4 ответа
    • 1 вопрос
  • pindschik
    pindschik
    • 4 ответа
    • 0 вопросов
  • eres_time
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации