• Как расчитать вес основания торшера?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для расчёта можно взять только одну ось, по второй торшер зеркально-симметричен и устойчив. За 0 примем центр основания.
    1. Основание - радиус Rосн, масса Mосн
    2. Вертикальная труба - расстояние от центра основания Xвт, масса Mвт
    3. Дуга, самая сложная часть, примем за сектор в 90°, радиус Rд, масса Mд
    4. Вынос - длина Lв, масса Mв
    5. Светильник - масса Mсвacbb3f86d8c64ba1ae8c2edd104d77be.png

    Для начала посчитаем расположение всех центров масс.
    Rцмд = Rд*sin(π/4)/(π/4) = 0.9*Rд
    Xцмд = Rд - Rцмд*cos(π/4) - Xвт
    Xцмв = Rд - Xвт + Lв / 2
    Xсв = Rд - Xвт + Lв

    Теперь возьмём формулу центра масс сложного объекта
    Xцм = SUM(Xi * Mi) / SUM(Mi)
    Наложим ограничение Xцм < Rосн
    (-Xвт*Mвт + Xцмд*Mд + Xцмв*Mв + Xсв*Mсв) / (Mосн + Mвт + Mд + Mв + Mсв) < Rосн
    (Mосн + Mвт + Mд + Mв + Mсв) > (-Xвт*Mвт + Xцмд*Mд + Xцмв*Mв + Xсв*Mсв) / Rосн
    Mосн > (-Xвт*Mвт + Xцмд*Mд + Xцмв*Mв + Xсв*Mсв) / Rосн - Mвт - Mд - Mв - Mсв
    Ответ написан
    1 комментарий
  • Как расчитать вес основания торшера?

    Основное правило : проекция центра масс на поверхность пола не должна выйти за "пятно" основания (и чем дальше оно будет от края основания, тем лучше).

    Теперь собственно математика - расчет точки центра масс и ее проекции "на пол".

    Мне кажется, что благодаря симметрии торшера "в профиль" Вы можете заменить отдельные части этого предмета (основание, нижняя часть дуги, верхняя часть дуги, абажур) на соответствующие массы, размещенные в центрах масс этих частей и провести весь расчет на линии проекции плоскости симметрии на пол для этих 4 точек. В последнем трюке не уверен на все 100%, но он кажется мне перспективным. Если у Вас есть какая-то программа, в которой построена эта модель в 3D, то лучше перепроверить, вычислив координаты общего центра масс торшера непосредственно.
    Ответ написан
    Комментировать
  • Как расчитать вес основания торшера?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Общая идея - центр тяжести конструкции должен проецироваться на основание.
    Приблизительная формула с надежным запасом
    ВесОснования = ВесПлафона * ДлинаСтойки / РадиусОснования
    Ответ написан
    Комментировать
  • Что сравнивается при сравнении массива с числом?

    @javedimka
    Хочу сока
    В питоне это называется списком, лучше уточнять.

    А ответом на твой вопрос является версия Python, когда ты в Python 2 сравниваешь два не одинаковых типа данных, то они сравниваются лексикографически(так это называется?), когда два названия типа сравниваются по алфавиту, т.е. тип списка это "list", тип целого числа это "int", сравнивается первая буква каждого слова, в английском алфавите буква L идет после i, т.е. порядковый номер буквы L(12) в алфавите больше, чем порядковый номер i(9), поэтому получается, что list > int (12>9), поэтому в Python 2 список больше числа с типом int (или float, decimal, по аналогии, но при этом числовые типы int, float, decimal можно успешно сравнивать между собой.)

    В Python 3 получишь ошибку:
    >>> x = [2, 3, 4, 6]
    >>> x > 1
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        x > 1
    TypeError: unorderable types: list() > int()
    Ответ написан
    Комментировать
  • Почему выдает none?

    longclaps
    @longclaps
    Потому что функция возвращает что-либо оператором return, а при его отсутствии всё равно возвращает результат, всегда равный None
    Ответ написан
    Комментировать
  • Знания для программирования?

    sim3x
    @sim3x
    English + google
    Ответ написан
    Комментировать
  • Как сравнить 2 тхт файла и удалить повторы?

    @undeadter
    Как то так:

    file_1 = open('1.txt', 'r').read().split('\n')
    file_2 = open('2.txt', 'r').read().split('\n')
    
    array = []
    for email in file_1:
        if email.split(':')[0] not in file_2:
            array.append(email)
    
    str = ""
    for email in array:
        str += email
        str += '\n'
    
    file_3 = open('3.txt', 'w')
    file_3.write(str)
    Ответ написан
    6 комментариев
  • Как работает онлайн сайтов (работа с requests)?

    qlkvg
    @qlkvg
    python backend developer
    Почти каждую неделю на тостере появляются вопросы подобного рода, и каждый раз ответ один и тот же - открыть консоль разработчика в браузере и смотреть, что там происходит. Не понимаешь, что такое GET, POST и циферки рядом с ними- https://ru.wikipedia.org/wiki/HTTP. Не в курсе про ajax - https://ru.wikipedia.org/wiki/AJAX. Слышал про crsf, но так и не можешь запомнить, что это значит и как с ним бороться - https://en.wikipedia.org/wiki/Cross-site_request_f... И так пока не постигнешь просветления.
    А уже потом, когда возникнут вопросы типа "Как передать multipart/form-data в POST-запросе?", идешь на тостер.
    Ответ написан
    Комментировать
  • Как запретить повторное посещение сайта, на 10 минут и редиректить посетителя на другой сайт?

    denis_bardak
    @denis_bardak
    Web Developer
    1 - таблица бд с id, временем датой входа и IP
    2 - скрипт который пишет время каждого входа и IP в эту таблицу (если IP уже есть в базе то перезаписывает время, если нет то создает новую запись)
    3 - скрипт который сверяет текущий IP и время посещения с данными из БД и рекредит если нужно
    Ответ написан
    Комментировать
  • Выбрать часть сторок?

    longclaps
    @longclaps
    data = """какойтотекст
    блаблабла
    <root>
    ...
    <child name=name id=id>
    <child name=name1 id=id1>
    ...
    </root>
    какойтотекст"""
    print(data.split("<root>")[0])
    print(data.split("</root>")[-1])
    Ответ написан
    Комментировать
  • Что такое асинхронный сокет?

    15432
    @15432
    Системный программист ^_^
    нет, эквивалентность многопоточности и асинхронного сокета отсутствует.

    попробую объяснить суть асинхронного сокета на простом примере.

    подходите вы к лотку купить минералки, а её нет, но продавщица сообщает, что скоро привезут.

    возможные варианты вашего ответа:
    1) "я подожду" - синхронный сокет, программа ожидает, пока не придёт сообщение.
    1.5) "долго не везут что-то, надоело ждать, ухожу" - синхронный сокет с таймаутом
    2) "ну ладно, я попозже загляну" - асинхронный сокет, программа не ждёт сообщения и занимается своими делами дальше
    2.5) "я вернулся, ну как, привезли? да? ну вот и отлично, забираю" - асинхронный сокет, очередная попытка приёма данных, на этот раз успешная
    3) "алё, Вован, я стою минералку жду, вернусь попозже, работай, не отвлекайся" - синхронный сокет + многопоточность. один поток ожидает приёма данных, другой поток работает
    3.5) "Вован, тут минералки ещё нет, ща вернусь" - многопоточность + асинхронные сокеты. несколько потоков работают одновременно, на приеме данных не блокируются
    Ответ написан
    2 комментария
  • Проблема с операторами if,elif в цикле?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Никогда не пишите такой говногкод!

    Зачем кучу раз повторять эти IF-ы?
    Если действия никак не отличаются для любого количества патронов - то какой смысл их писать отдельным кодом? С пистолетами разница только в размере барабана - тоже решается все через простую переменную.

    import time
    import random
    
    guns = {'флобер': 8, 'наган': 7, 'кольт': 6}
    while True:
      while True:
        gun = input('Добро пожаловать в русскую рулетку!\n'
                    'Флобер(8 патронов),Наган(7) либо Кольт(6)?\n'
                    'Выберите револьвер:')
        if gun.lower() not in guns.keys():
          print('Неверный револьвер')
        else:
          break
      bullets = guns[gun]
      while True:
        choice = int(input('Введите количеством патронов в барабане'
                           ' (от 1 до %d):'%bullets))
        if choice == bullets:
          print('Ну ты же знаешь что с полным барабаном у тебя нет шансов...')
        elif choice <= 0 or choice >= bullets:
          print('Некорректное количество патронов')
        else:
          break
      print('Барабан вращается')
      turn = random.randint(1, bullets)
      time.sleep(turn)
      if turn >= choice:
        print('Ты выиграл')
      else:
        print('Ты проиграл!')
    Ответ написан
    Комментировать
  • Проблема с операторами if,elif в цикле?

    @pcdesign
    Имеет смысл отказаться от этих бесконечных if, else, а использовать словарь dict со всеми вариантами.
    Тогда и ошибка сама исправится, да и сам код станет в 10 раз короче.
    Ответ написан
    Комментировать
  • Как считать дату из текстового файла Python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    >>> str1 = '2015-01-02'
    >>> import datetime
    >>> datetime.datetime.strptime(str1, '%Y-%m-%d')
    datetime.datetime(2015, 1, 2, 0, 0)


    >>> my_date = datetime.datetime.strptime(str1, '%Y-%m-%d')
    >>> my_date.year
    2015
    >>> my_date.month
    1
    >>> my_date.day
    2
    Ответ написан
    Комментировать
  • Python. Как достать значение параметра тега при парсинге?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    >>> from lxml import etree
    >>> str1 = '<li id="result_1418" data-asin="B01CZ654Q6" class="s-result-item s-result-card-for-container s-carded-grid celwidget "></li>'
    >>> elem = etree.fromstring(str1)
    >>> elem.get('data-asin')
    'B01CZ654Q6

    Собственно в elem - ваш тег, который вы через xpath или как еще вытаскиваете...
    Ответ написан
    1 комментарий
  • Как реализовать выпадающий меню в django?

    petermzg
    @petermzg
    Самый лучший программист
    django это серверный фреймворк, а меню это клиентская часть.
    На django вы только можете сгенерить html код вашего меню.
    Модель зависит от ваших конкретных задач.
    Ответ написан
    Комментировать
  • Считать с консоли/файла миллион int 'тов c разумными затратами по памяти и скорости Python?

    longclaps
    @longclaps
    Как-то так:
    from random import choice
    import re
    
    def main(s):
        for g in re.finditer(r'-?\d+', s):
            i = int(g.group(0))
            # print(i)
    
    
    nums = [str(i) for i in range(-100, 101)]
    N = 10 ** 6
    s = ' '.join(choice(nums) for _ in range(N))
    
    main(s)

    На моей машине main(s) отрабатывает за 0.5сек.
    Есть вариант чуть быстрее:

    def main(s):
        d = {str(i): i for i in range(-100, 101)}
        for g in re.finditer(r'-?\d+', s):
            i = d[g.group(0)]


    зы Python 3.5, на 2.7 будет быстрее.
    Ответ написан
    1 комментарий
  • Как организовать непрерывную прослушку микрофона и реакцию на определенное слово?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Без интернета только если у вас есть бюджет в пару миллионов зеленых на серверную ферму и оплату работы стада программистов для написания распозновалки голоса.
    Если в условиях задачи есть оговорка реагировать только на конкретно заданные слова которые заранее заданы для заранее известного голоса и интонации то решения есть. К примеру CMU Sphinx(сфинкс) но работает оно откровенно говоря несколько странно с Русским и вообще начинает очень плохо работать когда число команд переходит пару десятков (по крайней мере так было когда я его смотрел довольно давно). Порта на армы вроде не было но скорее всего добрые люди есть.
    Есть еще самый простой вариант, заюзать яндекс\гугл\... сервисы. Из плюсов удобное апи, огроменная точность(на фоне любых оффлайн решений). Из минусов нужен инет и забесплатно ограничения на число запросов.
    Еще можно задействовать андроид под это дело(точно не помню но вроде бы сервисы распознования без ограничений идут но требуют инета).
    Ответ написан
    Комментировать