• Как работает random.choices с weights?

    Maksim_64
    @Maksim_64
    Data Analyst
    Что бы трансформировать weights в вероятности вы каждый элемент делите на сумму weights. В вашем случае weights = (1,3,7,9,80). ваш пространство выборки a = [1,2,3,4,5], соответственно
    1 : 1 / sum(weights)
    2 : 3 / sum(weights)
    3 : 7 / sum(weights)
    4 : 9 / sum(weights)
    5 : 80 / sum(weights)

    Интерпретация: При большом количество реализаций эксперимента (большое количество выборок) в данной функции регулируется параметром k, ваша относительная частота будут СТРЕМИТСЯ к заданным вероятностям но не ПОЛНОСТЬЮ им соответствовать.
    Например:
    random.choice(['Red','Black'],[5,25], k=100)
    вы получаете
    Red: 5/30 = 1/5
    Black: 4/5
    за 100 реализаций эксперимента вы ОЖИДАЕТЕ.
    Red: 100 * (1/5) = 20
    Black: 80
    вам на ГАРАНТИРОВАННЫ 20 и 80. Могут быть близкие к этим значения, могут быть 20 и 80. То есть количество будет варьироваться возле этих значений.
    Ответ написан
  • Кол-во пройденных дней, часов, минут и секунд?

    Maksim_64
    @Maksim_64
    Data Analyst
    import datetime
    past = datetime.datetime(2022,11,25,16,55,32)
    now = datetime.datetime.now()
    mappings = {'Дней: ':60*60*24, 'Часов: ':60*60, 'Минут: ': 60,'Секунд: ':1}
    diff_in_seconds = int((now - past).total_seconds())
    result = ''
    for key, value in mappings.items():
        result += key + str(diff_in_seconds // value) + ', '
        diff_in_seconds %= value
    print(f'Разница между {past} и {now} состовляет {result}')

    Для примера я взял дату несколько дней назад и дату момента запуска скрипта, и вывел полную разницу, дальше подгоните под свои нужды и все.
    Ответ написан
    Комментировать
  • Не могу решить задачу на подбрасывание монетки, что делать?

    Maksim_64
    @Maksim_64
    Data Analyst
    import random
    
    result = {}
    for n in range(10):
        experiment = []
        while True:
            experiment.append('О' if random.random() < 0.5 else 'Р')
            for i in range(len(experiment) - 2):
                if (experiment[i] == experiment[i+1]) and (experiment[i+1] == (experiment[i+2])):
                    break
            else: 
                continue
            break
                
        result[f'Попытка Номер {n+1}'] = experiment
    print(result)


    среднее количество попыток допишите сами. Эксперимент сгенерирован результаты в словаре result, так что это не составит труда. Обратите внимание на else, continue и последний break. Первый break принадлежит циклу for, затем else принадлежит тоже циклу for (именно так) он запускается если первый break не состоялся внутри цикла for, затем мы имеем continuous который возвращает нас на начало цикла while и код запускается снова, когда наконец то условие выполнено внутри цикла for срабатывает первый break (мы вышли из цикла for) затем else и continuous игнорируются ( потому что else принадлежит к for не к if обращаю ваше внимание еще раз ) и наконец последний break прекращает вечный цикл while. Поработайте с кодом, что бы почувствовать механику.
    Ответ написан
    Комментировать
  • Python как добавить 3 часа к времени?

    Maksim_64
    @Maksim_64
    Data Analyst
    вы должны использовать объект timedelta.
    import datetime
    print((datetime.datetime.now() + datetime.timedelta(hours=3)).strftime("%d.%m.%Y %H:%M:%S"))
    Ответ написан
    Комментировать
  • Как преобразовать число в дробное?

    Maksim_64
    @Maksim_64
    Data Analyst
    попробуй поработать с позицией первого не нуля вправо или влево от точки алгоритмически.
    import math
    def convert(a,b):
        p = math.floor(math.log10(a))
        if a < 1:
            result = '0.' + str(abs(p+1)*'0') + str(b)
            return result
    print(convert(0.0601,535))
    print(convert(0.00601,535))
    print(convert(0.000601,535))

    ключевая строчка кода
    p = math.floor(math.log10(a))
    она дает тебе позицию отрицательную или положительную.
    Я думаю такая подсказка будет полезной, маленькая функция для примера работает не со всеми случаями (она представлена для примера). Но зная позицию первого не нуля от точки отрицательную в право и положительную влево, можно решить данную задачу.
    Ответ написан
    1 комментарий
  • Что не так с кодом на Pyhton?

    Maksim_64
    @Maksim_64
    Data Analyst
    В принципе по логике все верно, единственно в функции print нужно задать параметр end=' ', что бы вывод был в одну строку через пробел.
    n = int(input("Введите длину массива: "))
    mas = input("Введите элементы массива через пробел: ").split()
    for i in range(0,n,2):
        print(mas[i],end=' ')
    Ответ написан