• Где ошибка в коде?

    SoreMix
    @SoreMix
    yellow
    Проблема (выводит все отрицательные числа)


    Так а в чем проблема? На этом выражении ответом и будут только отрицательные числа.

    Если взять A = 0, а x,y = 0, то получается условие 2*0+0 > 0 -> False
    Если взять A = 1, а x,y = 0, то получается условие 2*0+0 > 1 -> False
    Ну и так далее. Все проверки, где A = 0 будут провалены, т.к. левое выражение будет всегда = 0 в начале итерации.

    Ответ не может быть положительным числом.

    Если под ошибкой подразумевается вывод всех чисел - можно просто запоминать последнее/максимальное число и выводить его в конце
    if f == 0:
            last_A = A
    
    # после всех циклов
    print(last_A)
    Ответ написан
  • Почему html разметка хранимая в бд выводится на сайте обычным текстом?

    @remzalp
    Программер чего попало на чем попало
    Autoescaping - автоматом преобразует HTML в текст.
    https://flask.palletsprojects.com/en/1.1.x/templating/

    Сделать в шаблоне с фильтром: {{ t.text|safe }}
    заодно рискуете получить в будущем XSS, если позволите кому угодно в базу пихать любой HTML код :)
    Ответ написан
  • Нужна ли админка боту vk api?

    SoreMix
    @SoreMix
    yellow
    VK Api 1.2. Добавление ботов в беседы

    Сейчас у бота в беседе есть три уровня доступа:

    Только упоминания
    Этот уровень доступа выдается сразу после добавления в беседу. Бот может:
    • видеть все сообщения, которые его касаются. Это упоминания бота и ответы на его сообщения
    • отправлять сообщения в беседу


    Доступ ко всей переписке
    Выдать его может любой администратор беседы. Бот может:
    • видеть все сообщения в беседе
    • отправлять сообщения в беседу


    Администратор
    Выдать его может только создатель беседы. Бот может:
    • видеть все сообщения в беседе
    • отправлять сообщения в беседу
    • Получать объект беседы
    • Получать объект беседы

    Ответ написан
  • Есть ли возможность спарсить данные, не через selenium?

    kustiktm_kirill
    @kustiktm_kirill
    Покоряю мир Python'а
    1. Браузер отправляет по умолчанию GET запрос, а кнопка у тебя оправляет POST
    2. Ты пропустил данные которые отправляет кнопка

    5fe36adb4d23c746119151.jpeg

    Вот рабочий код:
    import requests
    data = {
        'params[rows]': 10,
        'params[type]': 0,
        'params[season]': 'all',
        'params[direction]': 'desc',
        'params[order]': 'points_sum',
    }
    p = requests.post('https://albertparty.ru/api/get_new_rows', data)
    print(p.text)

    Тестируй)

    P.S. С каждым кликом по кнопке значение params[rows] увеличивается на 10. Т.е при втором клике тебе надо передавать 'params[rows]': 20
    Ответ написан
  • Как реализовать измерительный прибор со стрелочкой в Qt designer?

    Viktor_T2
    @Viktor_T2
    python developer
    Нарисуй свой вольтметр в SVG, в каком-нибудь графическом редакторе,
    например Inkscape.
    Потом делаешь нечто вроде этого:
    import sys
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QApplication, QGridLayout, QSlider, QWidget
    from PyQt5.QtSvg import QSvgWidget
    
    # потом <g transform="rotate({} 149 239)"> вместо {} подставляем поворот svg_str.format('угол')
    
    svg_str = """<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <svg width="300" height="300" viewBox="0 0 300 300" id="smile" version="1.1">
           <g transform="rotate({} 149 239)">
           <path
           id="path3709"
           style="fill:#ffaaaa"
           d="m 139.42058,223.21182 c 0.87131,-14.42535 -4.24928,-28.50419 -2.9033,-42.95942 0.48305,-19.46355 -1.22008,-39.07505 1.373,-58.42743 1.6052,
           -8.94222 4.9895,-17.45415 6.16399,-26.504939 1.01772,-7.086915 3.62587,-13.774342 5.77506,-20.51875 -0.66844,-6.151843 7.18967,-17.418207 12.67961,
           -11.676647 0.95503,7.682153 2.02107,15.331586 1.83789,23.120357 -0.33324,15.262759 4.70165,29.992469 4.90459,45.223769 1.63015,7.39779 4.63818,
           14.62777 3.86823,22.358 0.53553,10.04962 1.0294,20.61631 -3.7416,29.84285 -4.14927,9.74091 -10.65255,18.64536 -12.38767,29.28844 2.6986,7.78269 16.15108,
           2.57929 17.73005,12.21779 4.03312,10.37811 -0.18518,23.79596 -10.23781,29.07756 -7.18928,5.23203 -18.32381,7.8453 -25.2464,0.73107 -7.03162,
           -6.32331 -14.32459,-14.01261 -14.14214,-24.16516 -1.81894,-9.77467 8.70717,-14.9605 16.7892,-16.15672 3.57541,-1.44912 11.05229,0.60824 4.21681,
           3.35074 -3.55116,4.38962 -14.95304,3.44507 -16.39528,3.56979 3.20643,-0.98242 9.77158,-6.97143 5.3999,-0.45377 -1.78849,9.88387 3.2561,
           19.49489 10.74511,25.66411 4.71707,6.23276 13.94834,7.51007 20.02775,4.68256 -3.55814,1.65986 -11.33056,7.06102 -4.50259,1.28568 5.4695,
           -7.14418 7.51638,-18.29409 1.6675,-25.78616 -6.14571,-3.96281 -20.63622,-3.00294 -14.81272,-14.47468 4.44453,-14.02342 15.463,-25.87651 15.69919,
           -41.19539 -0.0512,-10.63367 0.3575,-21.63757 -3.59197,-31.73103 -1.7771,-9.93749 -1.54095,-20.12739 -3.75043,-30.01069 -1.90453,-11.483749 -1.62159,
           -23.186685 -2.8041,-34.711619 -3.81963,-5.549256 2.88463,-14.540184 7.44473,-11.98753 -1.26415,10.384778 -6.79308,19.654848 -7.94853,30.11085 -1.24183,
           11.198529 -6.6712,21.552179 -6.71927,32.945869 -0.93022,16.32705 0.13083,32.69954 -0.40451,49.04457 -0.31902,11.27313 1.05757,22.49297 2.69956,
           33.56835 3.45207,8.6394 -2.57318,11.85467 -9.43385,14.67758 z"
           />
           </g>
    </svg>
    """
    
    
    app = QApplication(sys.argv)
    
    layout = QGridLayout()    # планировка
    widget = QWidget()
    widget.setLayout(layout)
    
    svgWidget = QSvgWidget() # SVG виджет
    svg_bytes = bytearray(svg_str.format('0'), encoding='utf-8') # подставить угол и перевести в байтовую строку 
    svgWidget.renderer().load(svg_bytes)  # загрузить SVG в виджет 
    svgWidget.setGeometry(100,100,300,300)
    layout.addWidget(svgWidget)
    
    slider = QSlider(Qt.Horizontal) # слайдер
    slider.setRange(-50, 50)
    
    def updateSVG(value):
        """ Обновляет SVG при движении слайдера"""
        svg_bytes = bytearray(svg_str.format(str(value)), encoding='utf-8') # обновить угол и перевести в байтовую строку 
        svgWidget.renderer().load(svg_bytes)  # загрузить SVG в виджет
    
    slider.valueChanged.connect(updateSVG)
    
    layout.addWidget(slider)
    
    widget.show()
    
    sys.exit(app.exec_())
    Ответ написан
  • Как реализовать измерительный прибор со стрелочкой в Qt designer?

    NeiroNx
    @NeiroNx
    Программист
    Самое простое это показывать SVG , там есть процедура поворота вокруг точки.
    Ответ написан
  • Почему не получается спарсить информацию с сайта?

    Ternick
    @Ternick
    Проблема в куках, без них сайт отказывается работать, а на этом сайте куки устанавливаются js, которого в питоне нету, как вариант вручную прописывать кукис (__atuvs), я немного потыкал и пришёл к выводу, что проверяется только его наличие, а содержимое нечто случайное.

    Как вариант:
    import requests
    import time
    from bs4 import BeautifulSoup as BS
    
    phone = input("phone: ")
    
    num_name = []
    phone_ow = requests.get(f'https://phonebook.space/?input={phone}', cookies={"__atuvs":""}).text
    content = BS(phone_ow, 'html.parser').find('div', class_='results')
    for i in content.find_all('li'):
      num_name.append(i.text.strip())
    name = ', '.join(num_name)
    
    
    print(name)
    Ответ написан
  • Как добиться видимости объектов созданных в формах Qt Designer при разработке кода в PyCharm?

    @bbkmzzzz
    Заведите в классе отдельное поле для форм, будет удобнее.
    import labaa2
    
    class Laba2(QMainWindow):
        def __init__(self):
            super().__init__()
            self.ui = self.setupUi(self)


    Тогда вся форма будет в ui
    self.ui.button # например

    Дело в том, что QtDesigner создает файлы в "своем формате" (xml, если правильно помню), попробуйте открыть ui файл блокнотом, увидите. Питон ни сном ни духом, что там такое находится и как с этим взаимодействовать, вот тут на сцену и выходит uic. Он преобразует дерево виджетов ui в валидный питоновский класс, который использует установленную питоновскую библиотеку-обертку над Qt.
    С uic 2 подхода:
    1. uic.loadUi('TEST.ui', self)
    (есть смысл запихнуть это в отдельное поле класса, например, self.ui = uic.loadUi('TEST.ui', self), дабы не возникло не нужных пересечений имен, да и, на мой взгляд, аккуратнее получиться, мало ли еще одну форму в этот же класс грузить будете.)
    uic парсит ui файл, и создает сущности. Каждый раз, при запуске программы это будет происходить.
    + Не требует промежуточных звеньев
    - Не работает автодополнение IDE
    - Парсинг и формирование питон класса при каждом запуске.
    2. Конвертация заранее.
    - Требует промежуточное действие между формой и программой. (преобразование в ui в py)
    + Работает автодополнение
    + Не тратится время на преобразование при запуске программы.
    + В PyCharm можно настроить конвертацию на горячую клавишу.

    Не надо наследовать класс сразу от двух классов, в 99.9% Вам это не надо, а странных для вас эффектов можете огрести.
    С использованием предварительной конвертации
    Импортируйте сконвертированную форму в самом начале, дайте ей понятное название, потом подключите
    import labaa2
    from labaa2.Ui_Laba2 import Ui_что_там_у_вас as MainForm_UI
    
    class Laba2(QMainWindow,):
        def __init__(self):
            super().__init__()
            self.ui = MainFormUI()
            self.ui.setupUi(self)

    теперь вся форма будет в ui, автодополнение работает, Pycharm скорее всего не увидит сигналов, но это нормально, работать они, естественно, будут.

    P.S. Pycharm и External tools
    Картинки

    5f8caa995f6ff805437661.png
    5f8cad28bb2ce085833759.png
    Для такой организации формочек
    5f8cadf60e0e2969686885.png
    Правой кнопкой по файлу - то, как Вы назовете external tool.
    5f8caefc48637441580438.png
    # импорт
    import labaa2
    from forms.py.temp_ui import Ui_MainWindow as MainForm
    
    
    class Laba2(QMainWindow,):
        def __init__(self):
            super().__init__()
            self.ui = MainForm()
            self.ui.setupUi(self)


    Добавление хоткея
    5f8cafbe07d7f009801572.png
    Ответ написан
  • Как сделать так чтобы бот вк на python делал скрин сайта, обрезал его и отправлял фото в беседу не сохраняя его?

    SoreMix
    @SoreMix
    yellow
    Как-то странно вы фото отправляете.
    {'photo': (image_name, image_data) }

    Зачем передавать кортеж в поле photo, если туда нужно передать только байты изображения, которые в обычном виде, при загрузке с файла, выглядят так
    {'photo': open(image_name, 'rb') }

    В вашем же случае, я так понимаю, должно быть
    {'photo': image_data }

    Ну и не думаю, что tobytes() подходит для этого. Не занимаюсь обработкой изображений, но я бы сделал примерно так
    b = BytesIO()
    region.save(b, 'jpeg')
    return b.getvalue()
    Ответ написан