Ответы пользователя по тегу Python
  • Как посчитать количество одинаковых цифр в 4-х значном числе?

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Вы можете решить эту задачу, преобразовав каждое число в строку, а затем использовать метод count() для подсчета количества вхождений каждой цифры. Затем можно проверить, есть ли у числа три одинаковых цифры, используя условие if. Например:
    num_1 = 1000
    num_2 = 2600
    
    for i in range(num_1, num_2 + 1):
        s = str(i)
        for c in s:
            if s.count(c) == 3:
                print(i)
                break

    Здесь мы проходимся по каждому числу i в диапазоне от num_1 до num_2, преобразуя его в строку s. Затем мы проходимся по каждой цифре c в строке s, и если c встречается в строке s три раза, мы выводим число i и переходим к следующему числу. Обратите внимание, что мы используем оператор break, чтобы выйти из цикла, когда мы находим число с тремя одинаковыми цифрами, потому что дальнейший поиск в этом числе бессмысленен.
    Ответ написан
    9 комментариев
  • Как правильно обработать колонки в датафрейме?

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Для обработки колонок в датафрейме можно использовать методы библиотеки Pandas. Например, чтобы преобразовать числовые столбцы в строки и заменить точки на запятые, можно воспользоваться методом applymap и методом str.replace:
    import pandas as pd
    
    # пример данных
    data = {
        'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
        'code': [100000000000000, 200000000000000, 300000000000000],
        'amount': [1000.50, 2000.75, 3000.0],
        'text': ['some text', 'more text', 'even more text']
    }
    df = pd.DataFrame(data)
    
    # преобразование числовых столбцов в строки с запятыми
    df[['amount', 'code']] = df[['amount', 'code']].applymap(lambda x: f'{x:,.2f}')
    
    # замена точек на запятые в столбце amount
    df['amount'] = df['amount'].str.replace('.', ',')
    
    # вывод результата
    print(df)

    Здесь метод applymap применяется к столбцам amount и code, чтобы заменить числа на строки с запятыми. Затем метод str.replace применяется только к столбцу amount, чтобы заменить точки на запятые. Все остальные столбцы остаются в исходном виде.

    Чтобы избежать научной записи в столбце code, можно преобразовать его в строку и затем заменить букву E на 0:
    # преобразование столбца code в строку и замена буквы E на 0
    df['code'] = df['code'].astype(str).str.replace('E', '0')
    
    # вывод результата
    print(df)

    Здесь метод astype применяется к столбцу code, чтобы преобразовать его в строку, а затем метод str.replace заменяет точки на запятые в строковом представлении столбца. Однако, в данном коде не учитывается возможность наличия в столбце символов, отличных от точек и цифр.
    Ответ написан
  • Ошибка в коде телеграм бота при подключении к Postgresql?

    a777mp198
    @a777mp198
    Python developer
    Попробуйте заменить user_id = message.chat.id на user_id = message.from_user.id
    в функции main_menu. И если таблица создалась, можно убрать из кода
    cur.execute("""CREATE TABLE IF NOT EXISTS log_id(us_id INTEGER)""")
        base.commit()

    И лучше значение стобца us_id INTEGER поменять на BIGINT, так как некоторые user_id могут быть большими, и соответственно БД может их не принять в данный столбец.
    Так же, я бы рекомендовал открывать соединение с БД в каждой функции где она используется, а не глобально.
    async def main_menu (message):
        base = ps.connect(DATABASE_URL, sslmode='require')
        cur = base.cursor()
        user_id = message.from_user.id
        cur.execute("SELECT * FROM log_id WHERE us_id = %s;", (user_id, ))
        data = cur.fetchone()
        if data is None:
            cur.execute("INSERT INTO log_id (us_id) VALUES (%s);", (user_id, ))
            base.commit()
            cur.close()
        else:
            base.commit()
            cur.close()
        await bot.send_message(message.from_user.id, "Привет, {}!".format(message.from_user.first_name))
        await bot.send_message(message.from_user.id, "Выбери категорию  \U00002B07",
                               reply_markup=mainmenu_kb)
    Ответ написан
    Комментировать
  • Как отправлять гиперссылки вместе с обычным текстом в Telebot?

    a777mp198
    @a777mp198
    Python developer
    Если я Вас правильно понял, то скорее всего Вы хотите видеть следующее:
    bot.send_message(message.chat.id, "Здравствуйте. Вот ссылка на <a href='https://www.google.com/'>гугл</a>.", parse_mode='HTML')
    Ответ написан
    1 комментарий
  • Как скопировать сообщение пользователя в телеграм боте?

    a777mp198
    @a777mp198
    Python developer
    Если Вам необходимо получить сообщение пользователя, которое он напишет после определенного сообщения бота - воспользуйтесь машиной состояний.
    from aiogram.types import Message
    from aiogram.dispatcher import FSMContext
    from aiogram.dispatcher.filters.state import StatesGroup, State
    
    class MessageUser(StatesGroup):
        mes = State()
    
    
    @dp.message_handler(commands=['start', 'help'])
    async def welcome(message: Message, state: FSMContext):
        await message.answer('Приветствую! Напишите своё сообщение, а я сохраню его.')
        await MessageUser.mes.set()
    
    @dp.message_handler(state=MessageUser.mes)
    async def save_message_user(message: Message, state: FSMContext):
        await state.update_data(mes=message.text)
        data = await state.get_data()
    # теперь в объекте data['mes'] хранится сообщение пользователя, можете совершать с ним любые действия.
        await state.finish()
    Ответ написан
    Комментировать
  • Как убрать кавычки и запятые из SQLite ответа?

    a777mp198
    @a777mp198
    Python developer
    Можно ещё упростить ответ Александр Х
    result = cur.fetchone()[0]
    print(result)
    Ответ написан
    Комментировать
  • Как добавить emoji в TelegramBot python?

    a777mp198
    @a777mp198
    Python developer
    Есть вариант ещё проще. Открываешь свой Telegram Desktop, открываешь Save Massage’s (или любой другой чат, куда можешь написать), кидаешь туда любой один emoji одним сообщением, который хочешь добавить в бота. Затем просто нажимаешь ПКМ на emoji, далее “copy”. И всё, в боте просто Ctrl + V.
    Ответ написан
    Комментировать