Местоположение
Россия, Москва и Московская обл., Москва

Достижения

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

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

Все теги (25)

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

Все ответы (96)
  • Как правильно разбить текст по переносам строк?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Как то так
    s = """
    Название (1строка)
    Описание(несколько строк)
    Описание(несколько строк)
    Описание(несколько строк)
    Описание(несколько строк)
    Описание(несколько строк)
    Стоймость (1 строка)
    """
    
    l = s.strip().split("\n")
    
    name = l[0]
    price = l[-1]
    desc = ' '.join(l[1:-1])
    Ответ написан
    1 комментарий
  • Не могу найти где ошибка??

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    А че вот это за ...
    req = requests.get(url, headers)
      if req == 'https://dashboard.blooket.com/login':
    Ответ написан
    2 комментария
  • Как написать этот format?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    да я и так уже нагуглил много, нашел бы не писал

    врешь ты все

    гугли strftime
    Ответ написан
    Комментировать
  • Как изменить эмоциональную окраску текста?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    хз конечно правильно ли я понял что вы хотите
    да и начальные условия не понятны
    если тупо в лоб и с теми ограничениями что у вас есть то можно так

    c = set(text1.split()).difference(set(text2.split()))
    for i, w in enumerate(text1.split()):
        if w in c:
            print("{} -> {}".format(w, text2.split()[i]))
        else:
            print(w)

    и того
    Сергей
    сегодня
    получил
    двойку -> отлично
    на
    уроке.
    Дома
    ждет
    его
    наказание. -> подарок.
    Ответ написан
    4 комментария
  • Как правильно стыковать данные по датам из нескольких массивов?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Как это учесть? Если дней в месяцах бывает не всегда 30

    spoiler

    import datetime
    import calendar
    
    summa = 1000
    
    d1 = '2022-02-01'
    d2 = '2022-02-05'
    
    d1 = datetime.datetime.strptime(d1, "%Y-%m-%d")
    d2 = datetime.datetime.strptime(d2, "%Y-%m-%d")
    
    year = d1.year
    month = d1.month
    
    days_diff = d2 - d1
    month_days = calendar.monthrange(year, month)[1]
    summa_news = (month_days - days_diff.days) * summa / month_days
    
    print("Полная сумма {}".format(summa))
    print("Сумма с учетом дней {:.0f}".format(summa_news))

    и...
    Полная сумма 1000
    Сумма с учетом дней 857



    Ведь сравнивать по дате нельзя - дни могут не сойтись, а сойтись должно именно по месяцам.

    ну значит не сравнивай дни а сравнивай только по году и месяцу
    spoiler

    import datetime
    
    d1 = '2022-02-01'
    d2 = '2022-02-05'
    
    d1 = datetime.datetime.strptime(d1, "%Y-%m-%d")
    d2 = datetime.datetime.strptime(d2, "%Y-%m-%d")
    
    # v1 - как строки
    if d1.strftime("%Y-%m") == d2.strftime("%Y-%m"):
        print("Ok")
    else:
        print("No")
    
    # v2 - как обьекты
    if d1.year == d2.year and d1.month == d2.month:
        print("Ok")
    else:
        print("No")


    проверить принадлежность даты периоду можно еще так
    spoiler

    import datetime
    
    d1 = '2022-02-01'
    d2 = '2022-02-05'
    d3 = '2022-05-05'
    
    d1 = datetime.datetime.strptime(d1, "%Y-%m-%d").timestamp()
    d2 = datetime.datetime.strptime(d2, "%Y-%m-%d").timestamp()
    d3 = datetime.datetime.strptime(d3, "%Y-%m-%d").timestamp()
    
    if d1 <= d2 <= d3:
        print("Ok")
    else:
        print("No")


    В чем хранить все эти данные

    ну для тестового примере храни в sqlite - сгенерировать fake data не особо сложная задача
    как и в целом в данной задаче я не вижу больших проблем - тут только работа с датами

    в сухом остатке БД у тебя будет содержать две таблицы
    1. Таблица с платежами - id, payer_id, period, summa
    2. Таблица с информацией по плательщикам - id, payer_id, fio
    По payer_id ты легко можешь их связать. Выборку из БД делаешь по диапазону дат.
    В основном скрипте проверяешь и суммируешь - как вариант промежуточного хранилища используй словарь
    spoiler

    credits = {
        "Иванов" : {
            "credit_1" : {
                '2021-01': 21221,
                .
                .
                .
                '2021-11': 234234
            }
        }
    }



    Значительно упросить задачу можно правильной выборкой данных
    Вот пример (в твоем случае category_sub_name - это заемщик, category_cur_name - это кредит)
    spoiler

    SELECT category_cur_name, category_cur_name, SUM(summa) AS summa FROM (
    	SELECT category_sub_name, category_cur_name, SUM(view_count) AS summa, 
           strftime("%Y-%m", created_at) AS 'period' 
           FROM orders WHERE period >= '2021-01' AND period <= '2021-12'
    	   GROUP BY category_sub_name, category_cur_name, period) 
       GROUP BY category_cur_name ORDER BY summa DESC

    62983194ca346600365564.png

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

    Конечный вариант можно визуализировать в табличной форме например в pyqt
    Но с учетом специфики равных платежей у тебя скорее всего будет просто прямая

    Вот пример для расчета сезонности
    6298333332598997344560.png
    Ответ написан
    Комментировать

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

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