Ответы пользователя по тегу Python
  • Как сделать так что бы вк бот на Pyton "работал" отдельно для каждого пользователя?

    @efters
    Общее решение - создать структуру данных о пользователе с введёнными числами и состоянием, каждый раз при получении сообщения проверять состояние пользователя, состояния лучше хранить как Enum

    Если Вы используете pyTelegramBotApi, то можно использовать bot.register_next_step_handler, официальный пример: https://github.com/eternnoir/pyTelegramBotAPI/blob...

    Пример простой реализации с системой состояний

    from enum import Enum
    
    class UserStates(Enum):
    	PARAM_1 = 0
    	PARAM_2 = 1
    
    class UserInfo:
    	state = UserStates.PARAM_1
    	param_1 = 0
    	param_2 = 0
    
    users = {}
    
    # обработчик текстового сообщения от пользователя
    # userId - любой спосо идентификации пользователя (TG User ID / Chat ID / etc)
    
    if (users.has_key(userId)):
    	if (users[user_id].state == UserStates.PARAM_1):
    		# нам отправили первое число
    		users[user_id].param_1 = # int (сообщение)
    		# зпросить второе число
    		users[user_id].state = UserStates.PARAM_2
    
    	elif (users[user_id].state == UserStates.PARAM_2):
    		# отправили 2е число
    		users[user_id].param_2 = # int (сообщение)
    		#результат
    		result = users[user_id].param_1 + users[user_id].param_2
    		# готовы снова принять первый параметр для нового вычисления
    		users[user_id].state = UserStates.PARAM_1
    else:
    	users[user_id] = UserInfo()

    Ответ написан
    Комментировать
  • Как выводить данные из бд, в нужном для меня формате?

    @efters
    Если Вы имеете ввиду, что в БД string-ом лежит "[( XXX )]", то это можно просто отрезать: yourVar [2:-2]
    Если БД возвращает данные в виде list/tuple, то почему просто не взять [0]??
    Ответ написан
    3 комментария
  • Как в процессе цикла увеличивать количество кругов?

    @efters
    Используйте while

    i = 0
    repeats = 10
    
    while i < repeats:
        print(i)
        repeats = int(input())
        i += 1
    Ответ написан
    Комментировать
  • Яндекс конфликтует с selenium Python. Что делать?

    @efters
    Яндексу, естественно, не очень нравится, что его парсят. Если очень надо это обойти, то можно или использовать API какого-нибудь сайта с прокси (платно). Каждый раз, когда Яндекс будет просить решить капчу, менять прокси на новый, воззможно, старые прокси через какое-то время можно использовать повторно.
    Второй вариант - подключить сервис для решения капчи (также платно).
    Ответ написан
    Комментировать
  • Как сделать так, чтобы при запуске файла.py программа запускалась автоматически?

    @efters
    Либо запускать Python и указывать скрипт (python main.py, Python, естественно, должен быть добавлен в PATH ну или C:\Program Files\Python\bin\python.exe main.py)

    Если надо скомпилировать .py в исполняемый файл, то можно, например, использовать PyInstaller (но он не поддерживает Python 3.8, только от 3.5 до 3.7, достаточно просто поставить ещё одну версию). Ссылка на Quickstart, ссылка на короткий мануал по разным флагам (например, скомпилировать в один файл или спрятать консоль для программ с GUI)
    Ответ написан
    Комментировать