• Что может перемешать список быстрее random.shuffle?

    @o5a
    sharkyyy3, стоит привести свой код, похоже проблема в нем.
    Сам по себе shuffle 200 тыс элементов не будет занимать "очень много времени".
  • Функция ввода символов?

    @o5a
    BenderF, в python подобное можно объединить и использовать оператор in

    if x in ['n', 'y']
  • Как в python создавать таблицу в БД автоматически?

    @o5a
    Как уже написали, сделать можно, но для баз данных это не правильный подход. "Наименование групп" в данном случае должно быть не названием разных таблиц, а признаком (полем) в одной таблице. Это позволит использовать нормальный синтаксис SQL для выборки как по определенным группам, так и по всем, без извратов с подстановкой разного имени таблиц для разных групп, что потребуется делать в изначально приведенном вопросе.

    Например так
    c.execute('''
        CREATE TABLE IF NOT EXISTS NAME_TABLE(
        id_stud INTEGER NOT NULL PRIMARY KEY,
        number_zach INTEGER NOT NULL,
        password INTEGER NOT NULL,
        group_name TEXT NOT NULL)
      ''')


    Тогда для выборки студентов по группе не придется менять сам запрос, а только подставлять параметром имя группы

    c.execute('''SELECT * FROM NAME_TABLE WHERE group_name = ?''', (group_name, ) )


    И в отличие от манипуляций с именами таблиц, позволит так же легко выбрать например всех студентов из нескольких групп.
  • [Python] Как сделать передвижение строки?

    @o5a
    FlakeSunrise, можно сделать так, например

    import time
    
    stroka = input("")
    
    num_chars = 20 # размер окна символов
    
    for i in range(num_chars+1):
        print((" "*i + stroka)[:num_chars], end="\r", flush=True)
        time.sleep(1) # Время в мс
  • Как подсчитать сумму значений в столбце SQLite?

    @o5a
    ElizabethP, В какую таблицу вы собрались заносить "итого"? Хранить итоговую сумму в самой таблице sqlite не нужно, ее вам выдаст "select" из базы, когда потребуется отобразить актуальные данные.
    Например, для "Начальный остаток" с полями start_quantity, start_amount запрос
    SELECT nomencl, start_quantity, start_amount, sum(start_amount) over() total_start_amount from my_table

    возвратит данные в разрезе номенклатуры:
    - номенклатура
    - начальный остаток (кол-во)
    - начальный остаток (сумма)
    - итоговое поле суммы (оно в данном случае одинаковое для всех строк номенклатуры)
  • Как сравнить значения с базы данных?

    @o5a
    jabrik, Т.к. работаете с БД, то проверку наличия пользователя можно сделать сразу в SQL запросе:
    cursor.execute("SELECT COUNT(1) FROM users WHERE telegram_user_id = ?", (message.from_user.id, ))
    result = cursor.fetchone()[0]
    if result > 0:
        # значит пользователь уже есть в базе
  • Почему я получаю ошибку sqlite3.OperationalError: near "любое слово": syntax error?

    @o5a
    Tayrus0,
    cursorObj.execute(
                'UPDATE settings SET comment_text = ? WHERE id = ?', (message.text, message.chat.id))
  • Как вместо цифр использовать переменные в txt='0,1,2,3,4'?

    @o5a
    Эрнест Варданян, нужно будет добавить другие модули для чтения и копирования данных. Вот так набросал. Пытаемся открыть существующий файл и лист в нем, если есть, копируем и запоминаем последнюю строку. Если нет, создаем с нуля. Далее все почти как раньше было.
    import xlwt
    import xlrd
    from xlutils.copy import copy as xlcopy
    
    filename = "test.xls"
    
    try:
        book = xlrd.open_workbook(filename)
        sheet = book.sheet_by_index(0)
        last_row = sheet.nrows
        book = xlcopy(book)
        sheet = book.get_sheet(0)
    except Exception as e:
        print(e)
        book = xlwt.Workbook()
        sheet = book.add_sheet("Sheet1")
        last_row = 0
    
    # твои данные для занесения
    data = [
    ['player1', 'win', '101'],
    ['player2', 'lose', '102']]
    
    for row_index, row in enumerate(data, last_row):
        for col_index, value in enumerate(row):
            sheet.write(row_index, col_index, value)
    
    book.save(filename)
  • Как добавить пакет в Heroku?

    @o5a
    gederuzsk, можно в requirements вместо строки с "instagram=" прописать ее путь в github, чтобы ставилось оттуда
    https://github.com/OlegYurchik/pyInstagram/archive/master.zip

    Хотя не знаю, работает ли этот метод установки в heroku, не пробовал.
  • Как добавить пакет в Heroku?

    @o5a
    Ошибка говорит о том, что pip не может найти указанную в requirement конкретную версию 2.1.0 библиотеки.
    Если посмотреть на ее сайте https://pypi.org/project/instagram/ то там тоже последняя 1.3.4.
    Не знаю, откуда у вас бралась 2.1.0, возможно это на самом деле не та instagram, что в репозитории, а какая-то схожая с ней.
    Или же смените в файле версию на последнюю 1.3.4.
  • Как вместо цифр использовать переменные в txt='0,1,2,3,4'?

    @o5a
    Ernest123,
    import xlwt
    
    book = xlwt.Workbook()
    sheet1 = book.add_sheet("Sheet1")
    
    # твои данные для занесения в Excel
    data = [
    ['player1', 'win', '101'],
    ['player2', 'lose', '102']]
    
    for row_index, row in enumerate(data):
    	for col_index, value in enumerate(row):
    		sheet1.write(row_index, col_index, value)
    
    book.save("test.xls")
  • Почему не работает in в python 3?

    @o5a
    maxmine2, ясно, я не глянул сначала, думал там сравнение одинаковых размерностей.
    В таком случае можно так:
    if any(all(cell in ocells for cell in combo) for combo in win_combos):
        # есть совпадение комбинации нулей

    Здесь проверяем, что все ячейки из любой комбинации попадают в набор ocells.

    Или аналогично через пересечение множеств:
    oset = set(ocells)
    if any(not(set(combo)-oset) for combo in win_combos):
  • Как обьединить 2 списка в 1 словарь на Python?

    @o5a
    Владимир Филинский,
    Лучше придерживаться одного формата данных, не придется в дальнейшем проверять тип и по-разному обрабатывать его. Т.е. даже в случае одиночного значения все равно использовать список, в данном примере вместо 0 использовать [0].
    {'Интендификатор мастера': 0, '654': [1, 3, 4], '2425': 2, '—': [5, 6, 7, 8, 9, 10]}
    {'Интендификатор мастера': [0], '654': [1, 3, 4], '2425': 2, '—': [5, 6, 7, 8, 9, 10]}
  • Как найти есть ли последовательной элементов в списке?

    @o5a
    Александр, проверка через поиск подстроки в строке может выдать ошибочный результат, если элементы из нескольких символов и могут пересекаться. Можно проверить именно вхождение списка, перебирая по индексу, например так:
    a = ['p', 'p', 'p', 'p', 'p', 'p', 'figure', 'h2', 'figure', 'p', 'p', 'p', 'p', 'p', 'p']
    patt = ['p', 'figure', 'h2', 'figure']
    
    if any(a[i:i+len(patt)] == patt for i in range(len(a)-len(patt))):
    	print('found')
  • Что за ошибка и как исправить?

    @o5a
    Андрій Жеребнюк, для скриптов, использующих кириллицу, нужно в начале файла добавить строку, указывающую кодировку. Добавь первой строкой:
    # coding:utf-8
    или windows-1251 в зависимости от кодировки твоего скрипта.
  • Почему рассылка сообщений юзерам бота не работает?

    @o5a
    Николай Неизвестный, не надо ограничивать все только одной записью words[0], а выводить полностью words
    return words
    Только учитывать, что fetchall выдает кортеж на каждый ряд записей, т.е. words будет вида [(101,), (102,), (103,)]
    Соответственно или сразу привести к обычному или учитывать в том месте, где будет использовать вывод от all_id(), видоизменить так например:
    text = base_work.all_id()
    bot.send_message(message.chat.id, 'В течении 3 секунд, отправиться всем пользователям!')
    for i, *_ in text:
  • Почему не работает bot.callback_query_handler?

    @o5a
    Потому что обрабатывать все вызовы надо в одном обработчике в зависимости от callback_data
    @bot.callback_query_handler(func=lambda call:True)
    def call_handler(call):
        if call.data == "first":
            bot.send_message(call.message.chat.id, text="Введите свой вопрос")
        elif call.data == "sec":
            bot.send_message(call.message.chat.id, text="Пришлите свои варианты ответа в столбик")


    так или же вызовом своих процедур

    @bot.callback_query_handler(func=lambda call:True)
    def call_handler(call):
        if call.data == "first":
            call_opros(call)
        elif call.data == "sec":
            call_answer(call)
    
    def call_opros(call):
        bot.send_message(call.message.chat.id, text="Введите свой вопрос")
    
    def call_answer(call):
        bot.send_message(call.message.chat.id, text="Пришлите свои варианты ответа в столбик")
  • Почему рассылка сообщений юзерам бота не работает?

    @o5a
    Возможно base_work.all_id() и выдает только одно значение.
  • Класс Fraction: как добавить операции с целыми числами?

    @o5a
    Александр, и в чем проблема? Чтобы сложить две дроби, нужно привести их к общему знаменателю. Т.к. у целого числа знаменатель 1, то 1-ю дробь менять не надо, а 2-ю (целое число) просто домножить на знаменатель изначальной (1-й) дроби.
  • Python telegram bot || Можете помочь с ботом, парсером?

    @o5a
    ghazar7an, конечно будет выдавать ошибку, приведенный код пытается получить значение ключа от списка, что естественно невозможно. Стоит подучить основы языка. Если цель по каждой новости выводить "url текст новости", можно сделать так
    new_news = []
    soup = BeautifulSoup(page.text, "html.parser")
    news = soup.findAll('a', class_='news-item')
    for i in range(len(news)):
        if news[i].find('span', class_='title') is not None:
            new_news.append(f"{news[i]['href']} {news[i].text}")


    а в самой отправке текста оставить как раньше было
    bot.send_message(message.chat.id, ('\n'.join(new_news[:5])))


    И в цикле лучше использовать сами элементы списка, а не по индексу, т.е. вместо
    for i in range(len(news)):
        news[i]['href']
    
    использовать
    
    for item in news:
        item['href']