• Какая разница между двумя списками?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Разница в том, что это разные объекты. Соответственно, при внешней похожести ты перебираешь элементы разных составных объектов. В первом случае ты перебираешь элементы списка list_of_data, а во втором - элементы производного списка.
    Это, на мой взгляд, основное и существенное отличие.
    Ответ написан
    2 комментария
  • Как вывести многострочные переменные в одну строку в python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Исправил
    алфавит
    A = """  
      A  
     A A 
    A   A
    AAAAA
    A   A
    A   A
    A   A
    """
    
    B = """
    BBBB 
    B   B
    B   B
    BBBB 
    B   B
    B   B
    BBBB 
    """
    
    C = """
     CCC 
    C   C
    C    
    C    
    C    
    C   C
     CCC 
    """
    
    D = """
    DDDD 
    D   D
    D   D
    D   D
    D   D
    D   D
    DDDD 
    """
    
    E = """
    EEEEE
    E    
    E    
    EEE  
    E    
    E    
    EEEEE
    """
    
    F = """
    FFFFF
    F    
    F    
    FFF  
    F    
    F    
    F    
    """

    и накарябал печаталку:
    import alphabet_ascii as alfabet_ascii
    
    alph = {'A':alfabet_ascii.A,
    'B': alfabet_ascii.B,
    'C': alfabet_ascii.C,
    'D': alfabet_ascii.D,
    'E': alfabet_ascii.E}
    
    def make_symbols(symbols):
        lines = []
        for number, _ in enumerate(alph['A'].splitlines()):
            line = [alph[symbol].splitlines()[number] for symbol in symbols]
            line = ' '.join(line)
            lines.append(line)
        text = '\n'.join(lines)
        return text
    
    print(make_symbols('ABCDE'))
    Ответ написан
    1 комментарий
  • Какое регулярное выражение нужно использовать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Можно так:
    import re
    word = 'Бб-01-21оп'
    regex = '([\d]{2})оп'
    print(re.findall(regex, word)[0])

    но лучше никакого… с этими регекспами не знаешь, чего ожидать.
    Ответ написан
    1 комментарий
  • Как не повторять рандомный вывод со списка?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    import random
    previous = ''
    a = ''
    for i in range(15):
        while a == previous:
            a = random.choice(["вперед", "назад", "вверх", "вниз"])
        previous = a
        print(a)
    Ответ написан
    3 комментария
  • Как убрать дробную часть, не округляя число?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    «В лоб» можно так:
    data = [0.15771428571428572,
    0.20152380952380952,
    0.19123809523809523]
    for i in data:
        i = (i // 0.1) * 0.1
        print(i)
    Ответ написан
    Комментировать
  • Как в discord_slash добавить кнопки на Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Судя по ошибке, код пытается обратиться к объекту component как к словарю, а там - список.
    Почему так происходит? Возможно, тут components=[row]лишние квадратные скобки.

    Возможно, функция create_actionrow(btns) должна возвращать другой тип (сейчас возвращает список чего-то, надо посмотреть внимательно).
    Ответ написан
  • Недостатки видеоуроков?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Потому что чтобы учиться программировать, надо писать код. А просмотр видео это не написание кода, поэтому оно малополезно.
    Ответ написан
    Комментировать
  • Как получить данне с сайта с помощью BeautifulSoup?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Ответ


    data = '''
    <div class="catalog-grid catalog-grid_unpadding-mobile catalog-grid_by3 rightside ">
                    <div class="catalog-grid__item"><article class="product-snippet"itemscope itemprop="itemListElement" itemtype="http://schema.org/Product" >
        <button class="product-snippet__favorite product-card__favorite product-card__favorite"
                data-id="124852">
    
            <span>
    <svg width="24" height="24">
        <use xlink:href="/static/local/assets/sprite.svg?v=4#heart"></use>
    </svg>
    </span>        <span class="product-card__favorite_bin">
    <svg width="24" height="24">
        <use xlink:href="/static/local/assets/sprite.svg?v=4#bin"></use>
    </svg>
    </span>    </button>
    
        <!-- TOP PART -->
        <div class="product-snippet__top">
    
            <div class="product-snippet__right">
                <meta itemprop="sku" content="124852">                            <span itemprop="brand" itemscope itemtype="http://schema.org/Brand">
                        <meta itemprop="name" content="Colterenzio">                </span>
    
                <!-- ID -->
                <div class="product-snippet__id" data-value-group-id="132655"
                     data-value-id="108038">
                    <span>Артикул:</span>
                    124852            </div>
                <!-- #ID -->
                <!-- RATINGS -->
            <div class="product-snippet__ratings">
            <!-- STARS -->
                        <div class="product-snippet__ratings-item">
    
    <svg width="12" height="12">
        <use xlink:href="/static/local/assets/sprite.svg?v=4#star"></use>
    </svg>
                    <span>4.8</span>
                </div>
    
    
                    <!-- #STARS -->
    
            <!-- GREEN SELECTIONS -->
                    <!-- #GREEN SELECTIONS -->
    
    
                </div>
    <!-- #RATINGS -->
    
                <!-- NAME -->
                <a href="/catalog/product/colterenzio_pfefferer_2020_075/"
                   data-page="1"
                   data-value-group-id="132655"
                   data-value-id="108038"
                   class="product-snippet__name js-dy-slot-click">
                    Вино Pfefferer, Colterenzio, 2020&nbsp;г.            </a>
                <meta itemprop="name" content="Вино Pfefferer, Colterenzio, 2020&nbsp;г.">            <!-- #NAME -->
                                <!-- DESC -->
                    <div class="product-snippet__desc">
                        <a href="/catalog/vino/filter/country-italiya/">Италия</a>, <a href="/catalog/vino/filter/color-beloe/">белое</a>, <a href="/catalog/vino/filter/sugar_type-polusukhoe/">полусухое</a>, <a href="/catalog/vino/filter/volume-0_75/">0.75&nbsp;л.</a>                </div>
                    <!-- #DESC -->
                            <!-- DETAIL -->
                <div class="product-snippet__detail">
    
    
                                        <div class="tag-stock product-snippet__stock-part">
                            <div class="tag-stock__buy-price-sale-link">
                                <div class="tag-stock__icon-wrap">
                                    <span class="tag-stock__buy-price-sale-icon">
    <svg width="19" height="19">
        <use xlink:href="/static/local/assets/sprite.svg?v=4#sale"></use>
    </svg>
    </span>                                <div class="tag-stock__alert">
                                                                            <div class="tag-stock__alert-title">Вы обратились по адресу: у нас такого много</div>
                                        <p class="tag-stock__alert-descr">
                                                                                </p>
                                                                                <div class="tag-stock__alert-link-wrap">
                                                <a class="tag-stock__alert-link" href="/stock/vy-obratilis-po-adresu-u-nas-takogo-mnogo/"
                                                    >
                                                    Подробнее</a>
                                            </div>
                                                                        </div>
                                </div>
                                <span class="tag-stock__buy-price-sale-text">Участвует в акции</span>
                            </div>
                        </div>
    
    
                                        <!-- INFO -->
                        <div class="product-snippet__info">
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Страна:</span>
    
                                                                                                        <a href="/catalog/vino/filter/country-italiya/">Италия</a>
                                                                </div>
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Цвет:</span>
    
                                                                                                        <a href="/catalog/vino/filter/color-beloe/">белое</a>
                                                                </div>
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Сахар:</span>
    
                                                                                                        <a href="/catalog/vino/filter/sugar_type-polusukhoe/">полусухое</a>
                                                                </div>
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Объем:</span>
    
                                                                                                        <a href="/catalog/vino/filter/volume-0_75/">0.75&nbsp;л.</a>
                                                                </div>
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Виноград:</span>
    
                                                                    <a href="/catalog/vino/filter/grape-muskat_zheltyy/">мускат желтый 100%</a>                                                            </div>
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Производитель:</span>
    
                                                                                                        <a href="/catalog/vino/filter/manufacturer-colterenzio/">Colterenzio</a>
                                                                </div>
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Регион:</span>
    
                                                                                                        <a href="/catalog/vino/filter/region-trentino_alto_adidzhe/">Трентино-Альто Адидже</a>
                                                                </div>
                                                        <div class="product-snippet__info-item">
                                    <span class="product-snippet__info-title">Стилистика:</span>
    
                                                                                                        белое - яркое, из ароматических сортов винограда                                                            </div>
                                                </div>

    '''
    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(data, 'html5lib')
    product_data = soup.find(class_="product-snippet__info") #  выбрал этот класс, так как именно в нём отображена модель объекта - это видно глазами. 
    #  там внутри однотипные элементы, и их будем далее перебирать. 
    
    title = []
    for number, item in enumerate(product_data): #  тут enumerate не обязательно, я его поместил, чтобы когда буду разбираться, смотреть, к какому полю из полей product_data по номеру обращается скрипт. Можно убрать number и enumerate. 
        product_tds = item.find("a") #  нахожу следующий тег <a>
        if hasattr(product_tds, 'text'): #  среди найденных объектов у некоторых есть атрибут «text», у других его нет. Где его нет - пропускаем, где есть - складываем в список
            title.append(product_tds.text)
    print(' '.join(title)) #  печатаем найденные и сложенные в список title тексты через пробел.


    В действительности надо смотреть код всей страницы и, возможно, перебирать более сложным способом - но опереться на мою заготовочку можно, наверно.
    Ответ написан
    Комментировать
  • Pandas, Python. Есть отрывок кода индикатора RSI с использованием pandas, есть список, куда его притулить?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Не вдаваясь в математику, набросал пример для работы с приведенной функцией. Не уверен, что оно выдает то, что ожидается, но что-то оно таки выдает.

    код примера

    import json
    
    import numpy as np
    import pandas as pd
    
    from pathlib import Path
    
    #  тут я формирую тестовый файл json со списком длиной 50
    n = 50
    list_for_json = [i for i in range(n)]
    my_json_file = Path('myjson.json')
    with open(my_json_file, 'w') as myfile:
        json.dump(fp=myfile, obj=list_for_json)
    
    #  тут открываю этот файл, создаю из него dataframe Pandas и именую колонку с данными 'close', 
    #  так как такое имя используется в приведенной вами функции.
    with open(my_json_file, 'r') as myfile:
        df = pd.read_json(myfile)
    df.rename(columns={0: 'close'}, inplace=True)
    print(df.head())
    
    #  собственно функция без изменений
    def rsi_tradingview(ohlc: pd.DataFrame, period: int = 14, round_rsi: bool = True):
        """ Implements the RSI indicator as defined by TradingView on March 15, 2021.
            The TradingView code is as follows:
            //@version=4
            study(title="Relative Strength Index", shorttitle="RSI", format=format.price, precision=2, resolution="")
            len = input(14, minval=1, title="Length")
            src = input(close, "Source", type = input.source)
            up = rma(max(change(src), 0), len)
            down = rma(-min(change(src), 0), len)
            rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
            plot(rsi, "RSI", color=#8E1599)
            band1 = hline(70, "Upper Band", color=#C0C0C0)
            band0 = hline(30, "Lower Band", color=#C0C0C0)
            fill(band1, band0, color=#9915FF, transp=90, title="Background")
        :param ohlc:
        :param period:
        :param round_rsi:
        :return: an array with the RSI indicator values
        """
    
        delta = ohlc["close"].diff()
    
        up = delta.copy()
        up[up < 0] = 0
        up = pd.Series.ewm(up, alpha=1/period).mean()
    
        down = delta.copy()
        down[down > 0] = 0
        down *= -1
        down = pd.Series.ewm(down, alpha=1/period).mean()
    
        rsi = np.where(up == 0, 0, np.where(down == 0, 100, 100 - (100 / (1 + up / down))))
    
        return np.round(rsi, 2) if round_rsi else rsi
    
    #  ну а дальше просто вызываю функцию и передаю в неё dataframe и печатаю, что она возвращает. #  Насколько это вменяемо внутри функции, не знаю.
    
    print(rsi_tradingview(ohlc=df))
    Ответ написан
  • Как сделать программу, открывающую другие приложения и способную закреплять другие приложения на панели задач?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Вам нужно разобраться в том, как всё это устроено: что такое панель задач, как туда попадают приложения в самой винде, и как каждый из этих этапов можно реализовать в python.
    Конечно, можно взять и рассказать всё это, но полезнее будет, если вы сами покопаетесь и поймёте, сделаете свой код и, если в нём будет чего-то не хватать или работать не так, как хочется, то приносите свой код и будет о чём поговорить.
    Ответ написан
    Комментировать
  • Как можно упростить код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    import random
    
    def get_random_int():
        return random.randint(5, 10)
    
    
    def get_random_a_b():
        return get_random_int(), get_random_int()
    
    
    a, b = get_random_a_b()
    while True:
        if a > b:
            result = a - b
            sign = '-'
        else:
            result = a + b
            sign = '+'
        sent = '\n'.join(['', str(a), sign, str(b), 'Ваш ответ: '])
        if int(input(sent)) == result:
            print("Правильно!")
        else:
            print(f"Ошибка! Правильный ответ: {result}")
        a, b = get_random_a_b()
    Ответ написан
    Комментировать
  • Как правильно спарсить шаблон?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Нагляднее так:
    from datetime import datetime
    
    now = datetime.now()
    prefix = 'error'
    error = 'сама ошибка'
    error_time = now.strftime("%d.%m.%Y, %H:%M:%S")
    entry = f'[{prefix}] {error_time}: {error}'
    
    print(entry)
    Ответ написан
    Комментировать
  • Ваше мнение об уходе за MacBook?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Насчёт прочности: давеча 15” упал с метра углом на бетонный пол. Угол вдавился, экран цел, бук работает как часики.
    spoiler
    61debd130e3a2362694285.jpeg61debd8bb9afa834367859.jpeg

    Планирую корпус подрихтовать и юзать дальше.

    Рекомендованный DevMan хардкейс спас бы, наверно.
    Ответ написан
  • Как устроиться django-developer без опыта коммерческой разработки?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Поищи на ютьюбе "Резюме айтишника. Почему тебя не зовут на собеседование?" от всё ещё Сергея Немчинского. Ни в коем случае не делай точно, как он говорит. Не ведись на рекламу его курсов и всё вот это вот. Но непременно осмысли то, о чём он говорит, и творчески переработай для себя и для своего случая.
    Ответ написан
    2 комментария
  • Как решить это?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Слово из букв ACDE. 4 буквы. Что не так?
    Ответ написан
  • Почему не работает цикл while в python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Потому что True это 1, а не 10. Но приведение 10 к булеву значению даст 1.
    i = 10
    while bool(i) == True:
        print(i)

    Во втором варианте оно неявно приводится интерпретатором, поскольку while принимает на вход только булево значение.
    Ответ написан
    2 комментария
  • Как сделать элемент кликабельным Selenium Python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Лучше привести фрагменты кода selenium и кода страницы, в которой пытаемся нажать label.
    Есть варианты.
    • Возможно, сделать паузу 2-3 секунды перед кликом.
    • Можно вместо метода click попробовать метод submit, если label связан с элементом формы вроде input - может помочь.
    • Возможно, выполнить клик через JS (можно поискать, в инете полно, типа
      driver.execute_script("document.getElementsByClassName('label')[0].click()")
      или другой метод, я же не вижу что там у вас есть “label”.
    • Возможно, выбрать элемент через css, иногда помогает.
    Ответ написан
    Комментировать
  • Где тут лишние табы/пробелы, или что это за ошибка?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Нельзя одновременно использовать табы и пробелы. Где они - он же пишет тебе, в 14 строке. И кстати ещё в 8-й.
    Ответ написан
    2 комментария
  • Как заставить рисовать PyGame линиями, вместо точек?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Посмотри, я когда-то ковырялся в этом деле, код по ссылке.
    Ответ написан
    8 комментариев
  • Можно ли с помощью библиотеки vidstream общаться с разных ПК и вне локальной сети?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Следующие слова
    Under construction! Not ready for use yet!
    на github намекают, что скорее всего нельзя.
    Ответ написан