Задать вопрос
  • Как создать комнату в браузерной игре?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Без бэкенда тут не обойтись. Знаете python? Если нет, стоит подучить. Если да, то знаете ли какой-нибудь фреймворк, типа Flask/Django? Если не знаете, то опять же стоит освоить. Без этого по-нормальному вы ничего не напишите.
    На flask простейший пример будет выглядеть примерно так

    from flask import Flask, redirect, url_for, request
    import random
    import string
    
    app = Flask(__name__)
    
    rooms = {} # здесь будем хранить комнаты и игроков, которые к ним подключились
    
    def generate_room_code(): # функция генерация id комнаты
        return ''.join(random.choices(string.ascii_uppercase, k=4))
    
    @app.route('/')
    def index(): # тут делаем стартовую страницу. Сейчас это зашито прямо в скрипт, но можно возвращать файл
        return '''
        <!doctype html>
        <html>
            <head>
                <title>Новая игра</title>
            </head>
            <body>
                <h1>Добро пожаловать!</h1>
                <a href="/start">Начать новую игру</a>
            </body>
        </html>
        '''
    
    @app.route('/start')
    def start(): # это будет выполняться после нажатия на ссылку "Начать игру"
        room_code = generate_room_code()
        rooms[room_code] = [] # тут добавляем id комнаты. Список пустой, т. к. игроков ещё нет
        return redirect(url_for('waiting_room', room_code=room_code)) # перенаправляем пользователя в комнату
    
    @app.route('/waiting/<room_code>')
    def waiting_room(room_code): # тут делаем комнату.
        if room_code not in rooms:
            return "Not found", 404 # если нет такой комнаты
        return f'''
        <!doctype html>
        <html>
            <head>
                <title>Комната</title>
            </head>
            <body>
                <h1>Комната {room_code}</h1>
                <form action="/join" method="post">
                    <input type="hidden" name="room_code" value="{room_code}">
                    <input type="text" name="player_name" placeholder="Имя">
                    <button type="submit">Присоединиться</button>
                </form>
                <h2>Игроки:</h2>
                <ul>
                    {''.join([f'<li>{player}</li>' for player in rooms[room_code]])}
                </ul>
            </body>
        </html>
        '''
    
    @app.route('/join', methods=['POST'])
    def join_room(): # обрабатываем запрос на присоединение
        room_code = request.form['room_code']
        player_name = request.form['player_name']
        if room_code in rooms:
            # добавляем игрока и перенаправляем его обратно
            rooms[room_code].append(player_name)
            return redirect(url_for('waiting_room', room_code=room_code))
        return "Not found", 404
    
    if __name__ == '__main__':
        app.run(debug=True)
    Это, конечно, просто пример, для того, чтобы вы понимали, как это выглядит

    ИМХО Flask или Bottle (вообще изи) для вас самое лучшее, если вы пока не в теме. Django для новичков не подходит. Ну и конечно, думайте, точно ли вам нужен python
    Ответ написан
    2 комментария
  • Как сделать звонок в тг с помощью python?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    По-простому никак. Иначе это уже не бот, а спамер какой-то. Но всё-таки можно попробовать.
    Если должен пользователь кому-то звонить, после того, как бот предложит ему, то можно так
    bot.send_message(message.chat.id, "[Позвонить](tel:+89000000000)", parse_mode='Markdown')

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

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Никак
    Ответ написан
    Комментировать
  • Как разобраться в задании лабораторной работы?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    По-моему все просто. А 1 bool опечатка с вероятностью 99%

    Если N положительное число, вам нужно создать одномерный массив размера N, заполненный случайными значениями типа данных M
    1. 6 int означает, что нужно создать массив размера 6, заполненный случайными целыми числами.
    2. 3 bool означает, что нужно создать массив размера 3, заполненный случайными булевыми значениями (True или False).
    3. 4 float означает, что нужно создать массив размера 4, заполненный случайными числами с плавающей точкой.

    Если N меньше -2, вам нужно создать квадратную матрицу размера ∣N∣×∣N∣, где ∣N∣ — это абсолютное значение. Матрица должна быть заполнена нулями, за исключением границ, которые должны быть заполнены случайными значениями типа данных M
    1. -3 int означает, что нужно создать матрицу размера 3x3, заполненную нулями, с границами, заполненными случайными целыми числами.
    2. -10 float означает, что нужно создать матрицу размера 10x10, заполненную нулями, с границами, заполненными случайными числами с плавающей точкой.

    Если N находится в диапазоне от -2 до 0 (включительно), вам нужно вывести сообщение об ошибке.
    Ответ написан
    1 комментарий
  • Как зная ID пользователя, получить кол-во всех сообщений в личном чате с ботом/ID последнего сообщения, если оно уже обработано?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    ...
    bot = Bot(token=...)
    ...
    async def get_chat_history(user_id: int):
        updates = await bot.get_updates()
        chat_messages = [update.message for update in updates if update.message and update.message.chat.id == user_id]
        return len(chat_messages), chat_messages[-1].message_id if chat_messages else None

    Возвращает список, в котором нулевой элемент - кол-во сообщений, первый - id сообщения, если таковое было (если не было, то None)
    Ответ написан
    8 комментариев
  • Почему в библиотеке telethon python не запускается цикл?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    Проблема в том, что вы открываете файл один раз в начале программы и используете его как итератор. После первого прохода цикла for итератор исчерпывается, и в следующий раз, когда вы пытаетесь пройтись по нему, он уже пуст. Поэтому файл надо открывать, когда приходит новое сообщение, а не в начале программы:
    with open("area.txt", "r") as area:
        for i in area:
            print(i.rstrip())
            if i.rstrip() in act_mes:
                print(act_mes)
    Ответ написан
    2 комментария
  • Возможно ли использовать ИИ для сравнения текста?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Думаю здесь вам лучше помогут
    Ответ написан
    Комментировать
  • По сколько байтов записывается в /dev/input/mice за один раз?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    По сколько байтов записывается в /dev/input/mice usb-драйвером за один раз?
    По три
    почему я от имени рута не могу записывать в этот файл, если у него права 'crw-rw----'?
    Потому что, это устройство только для чтения
    Ответ написан
  • Как в Python заставить tg-бота выполнять команду с определенной вероятностью?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Я новичок в этом деле.

    Goto язык учить, а не ботов писать. Рано это для вас ещё
    Ответ написан
    2 комментария
  • Можно ли на ЕГЭ по информатике использовать библиотеку питон requests?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Нет, нельзя. Можно использовать только стандартные библиотеки и возможности python. И потом, чтобы её использовать, её надо скачать и установить, но выхода в интернет на компьютерах в аудитории скорее всего не будет.
    Ответ написан
  • Направления создание клона Minecraft?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Unity. Но только после того, как проштудируете учебник русского языка.
    Ответ написан
    5 комментариев
  • Как правильно создать кнопку используя class, для открытия нового окна (без передачи аргументов, если это возможно)?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    1. Как верно заметил dim5x у метода pack() нет параметров x и y, поэтому вместо pack вы можете использовать place(). В данном случае btnSc.place(x=50, y=50)
    2. Зачем вы используете класс FuncButton если его методы не используют экземпляр класса? В этом нет никакого смысла. Но если уж очень хочется, то я рекомендовал бы использовать декоратор @staticmethod

    Все вместе получается так:
    код
    from tkinter import *
    import webbrowser
    
    class FuncButton:
    
        @staticmethod
        def btn1():
            pass
    
        @staticmethod
        def btn2():
            pass
    
        @staticmethod
        def btn3():
            pass
    
        @staticmethod
        def website():
            site_root = Tk()
            site_root.geometry('600x500')
            site_root.title('New window')
            site_root.resizable(width=False, height=False)
    
            btnSc = Button(site_root, text='Проба', bg='blue', font=('Arial', 16, 'bold'),
                           command=lambda: webbrowser.get(using=None).open_new_tab('https://www.youtube.com'))
            btnSc.place(x=50, y=50)  # Используем place вместо pack
    
            site_root.mainloop()
    
    main_root = Tk()
    main_root.geometry('600x500')
    main_root.title('Main window!')
    main_root.resizable(width=False, height=False)
    main_root.image = PhotoImage(file='BG.png')
    bg_logo = Label(main_root, image=main_root.image)
    bg_logo.grid(row=0, column=0)
    
    btnOne = Button(main_root, text='ONE', bg='yellow', font=('Arial', 16, 'bold'),
                    command=lambda: FuncButton.btn1())
    btnOne.place(x=88, y=155, width=195, height=40)
    
    btnTwo = Button(main_root, text='TWO', bg='red', font=('Arial', 16, 'bold'),
                    command=lambda: FuncButton.btn2())
    btnTwo.place(x=88, y=200, width=195, height=40)
    
    btnThree = Button(main_root, text='THREE', bg='pink', font=('Arial', 16, 'bold'),
                      command=lambda: FuncButton.btn3())
    btnThree.place(x=88, y=245, width=195, height=40)
    
    btnS = Button(main_root, text='WEBSITE', bg='lightgreen', font=('Arial', 16, 'bold'),
                  command=lambda: FuncButton.website())
    btnS.place(x=88, y=290, width=195, height=40)
    
    main_root.mainloop()
    Ответ написан
    1 комментарий
  • Как убрать лишнюю информацию из json ответа?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    Выключить логирование
    Ответ написан
    Комментировать
  • TypeError: __init__() takes 1 positional argument but 2 were given у меня проект на aiogram плюс sqlalhemy ,но я совсем недавно начал?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    и не говорить мне учиться
    Именно это я и скажу. Мы должны все разжевать и вам в рот положить?
    но я совсем недавно начал
    Это не даёт вам права не учиться
    прошу найти именно ошибку
    Вот именно поэтому, я и посылаю вас учиться.
    я уже задавал этот вопрос
    А это чревато его удалением или даже баном.

    Ну и как я вам уже говорил 12 дней назад
    Учиться, учиться и ещё раз учиться. А не ботов писать.
    Ответ написан
  • Ошибка [WinError 2] Не удается найти указанный файл в Sublime text как решить?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    Просто запускать из командной строки cmd
    Ответ написан
  • Какой бот использовать для автоподписи Telegram?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Какого бота посоветуете для автоматического
    Никакого
    Ответ написан
    Комментировать
  • Почему сорт не работает?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    я что то не до понимаю?
    Ага

    console.log(obj.sort((a, b) => a.title.localeCompare(b.title)));
    Ответ написан
    1 комментарий
  • Убрать другие строки из джоина?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Вроде бы так:
    WITH ranked_b AS (
        SELECT
            b.*,
            ROW_NUMBER() OVER (PARTITION BY b.id_ref ORDER BY b.date1 DESC, b.id DESC) as rn
        FROM
            tableB b
    )
    SELECT
        a.*,
        bb.*
    FROM
        tableA a
    LEFT JOIN
        ranked_b bb
    ON
        bb.id_ref = a.id AND bb.rn = 1
    WHERE
        bb.str LIKE '3465672345';
    Ответ написан
  • Как сделать цикл во 2 списке и выйти на финал кода тестового задания?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    def analyze_sales(input_strings):
        
        limit = int(input_strings[-1]) # Последняя строка - это порог
        products = input_strings[:-1] # Всё остальное - товары
        # Здесь должно быть всё понятно
        results = []
        for product in products:
            parts = product.split(',')
            name = parts[0]
            prices = list(map(int, parts[1:]))
            average_price = sum(prices) / len(prices)
    
            if average_price > limit:
                results.append(f'{name},{average_price:.1f}')
    
        return results
    
    lines = []
    while True:
        try:
            line = input()
            if line == "":
                break
        except EOFError:
            break
        lines.append(line)
    
    for product in analyze_sales(lines):
        print(product)
    Ответ написан
    Комментировать