Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (28)

Лучшие ответы пользователя

Все ответы (66)
  • Циклы. While, do while, for, чем отличаются?

    @Zanak
    Как - то, почитал я ответы коллег, и остался разочарован. Понятно, что вопрос не простой, а очень простой, но можно и по аккуратнее в изложении. В общем, мои 5 копеек.
    Любой цикл - это кусок кода, который обычно называют телом цикла, и который мы желаем выполнить несколько раз. Количество повторений может быть заданно заранее, например: цикл от 0 до 10, зависеть от данных, например: для каждого элемента массива или зависеть от значения, которое мы в теле цикла вычисляем, например: пока f(x) > 0 выполнять. По крайней мере, во всех известных мне языках программирования, есть оператор досрочного выхода из цикла.
    while. Цикл с предварительным условием. Выполняется пока условие истинно. Проверка происходит до исполнения тела цикла. Если условие изначально ложно, то тело не выполнится ни разу. Если условие ни когда не станет ложным, то мы получим бесконечный цикл. Распространенные ошибки новичков, при использовании этого цикла:
    - условие не зависит от переменных, которые изменяются в теле цикла, и оно всегда получается истинным
    - условие ни когда не станет ложным, в силу его свойств, например: X * X >= 0 всегда верно
    Пример на php:
    $i = 1;
    while ($i <= 10) {
        echo $i;
        $i++;
    }

    do ... while. Цикл с постусловием. Отличие от предыдущего в том, что тело цикла исполняется хотя бы один раз, и после этого происходит проверка условия выхода из цикла. К типичным ошибкам предыдущего вида циклов добавляется то, что этот цикл гарантированно исполняется один раз, что не всегда желательно.
    В этом примере цикл отработает один раз, не смотря на то, что условие ложно:
    $i = 0;
    do {
        echo $i;
    } while ($i > 0);

    for. Чаще всего этот оператор описывает цикл с фиксированным количеством повторений. Вот так он может выглядеть, например, для php:
    for ($i = 1; $i <= 10; $i++) {
        echo $i;
    }

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

    @Zanak
    Асинхрон на базе очередей редиски не вариант? Я про что - то подобное этому.
    Ответ написан
    Комментировать
  • Как "заставить" функции выполнятся после условий, если сначала их нужно написать?

    @Zanak
    Если я правильно понял вопрос, то ваша проблема здесь:
    figures = {'1': triangle(point=point, angle=0, length=200), '2': square(point=point, angle=0, length=200),
               '3': pentangle(point, angle=0, length=100), '4': sixangle(point=point, angle=0, length=100)}

    Вы вместо ссылки на функцию сохраняете результат ее вызова, и так для каждого ключа.
    Ответ написан
    Комментировать
  • Как на python сделать таймер?

    @Zanak
    Еще можно как - то так:
    import signal, os
    
    def handler(signum, frame):
        print 'Signal handler called with signal', signum
        exit()
    
    signal.signal(signal.SIGALRM, handler)
    signal.alarm(5)
    
    for i in range(0, 1000000):
        print "i: %s\n" % (i)
    Ответ написан
    Комментировать
  • Как можно обходить защиты сайтов от ботов?

    @Zanak
    Задача в общем случае не имеет решения, конечно, если договорится с владельцем сайта - не вариант.
    Да, ты можешь на питоне научится подделывать заголовки запросов, распознавать капчу, можешь даже качественно строить в памяти dom и обрабатывать его js, загруженным со страниц целевого сайта, но это работает только в частных случаях. Как только появляется интерес не дать тебе утащить данные, сразу начинается гонка, один придумывает способы, как обламать халявщика, другой - как эти проверки обойти. Авита, как пример, много внимания уделила, а может и уделяет до сих пор, противостоянию с пауками, и, в моем случае, найденные решения жили от нескольких дней, до нескольких месяцев, а потом все равно отпадали.
    Если, все таки, желание не отпало, можно попробовать перестать прикидываться браузером и стать им на самом деле. Речь про написание плагинов, которые будут приглядывать за страницей и искать на ней нужные данные, собирая их в памяти на отдельной вкладке, или отправляя на твое api для сохранения. Можно попробовать поиграться со встраиванием браузера в твою программу, но я игрался только со встраиванием ишака в прогу на дельфях, да и то, очень давно.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (4)