Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 8 / 0
Регистрация: 29.10.2016
Сообщений: 206

Адаптировать код из офлайн версии в телеграмм бота

27.11.2023, 12:43. Показов 1256. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форумчане, Pythonисты!
Подскажите, отзовитеся!
Ваш попрошайка пост выложил - код сырой принёс;
Бежит код по пайчарму,
Из пайчарма по API Bot(а),
Из API Bot(а) во сыру сеть!
Вступление читать под "ритм" сказки "Волк и семеро козлят"

Форумчане, пожалуйста, подскажите/подправьте код для использования его на телеграмм Боте (в будущем будет диплоидным).
Нижеприведённый код работает на локальном компьютере и тестирует пользователя. Исходные данные содержатся в файле excel с именем voprosu.xlsx.
Вопросы (столбец «B») и ответы (столбец «C», столбец «D», столбец «E», столбец «F») хранятся на листе с именем «Лист1» в котором 1 столбец «A» номер по порядку, 2 столбец «B» вопрос для пользователя, 3 столбец «C» правильный ответ, 4 столбец «D» и 5 столбец «E», а также 6 столбец «F» это ложные ответы для пользователя. Ответы перемешиваются из той же строки где вопрос и предлагаться с вариантами ответов A B C D. В столбце 7 «G», содержатся комментарии к каждому вопросу, который выводится в случае ввода пользователем ложного ответа на вопрос.
Вопросы начинаются со второй строки и выбираются рандомно по 5 вопросов. Из столбца “B” файла voprosu.xlsx на листе с именем «Лист1».
Требуется после каждого ответа:
1. Вывод сообщения правильно, переход к следующему вопросу;
2. В конце итог столько-то правильно, столько-то не правильно
3. Если пользователь ввёл НЕ правильный ответ или что-то не из списка анкетирование продолжается и ответ засчитывается как НЕ правильный и выводится комментарий.
Файл с вопросами прилагаю. Они символичные просто обозначающие.

Вы мне поможете, если дополните его (исправите) для телеграмм бота.
При редактировании, пожалуйста, примите пожелания:
При приветствовании пользователя бот должен поприветствовать пользователя по нику. Вывести две кнопки "начать викторину" и "ознакомиться с информацией". При нажатии на ознакомление информации выводятся правила викторины, а при начать викторину выводится вопрос согласно ниже представленного кода, а ответы на вопросы должны содержатся в 4-х горизонтальных кнопках (друг над другом).
Если ответ не верный, см. п. 3
В конце вывод сообщения о результатах тестирования.

Буду рад если перечислите какими кнопками пользоваться и в каком месте.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import openpyxl
import asyncio
from openpyxl import load_workbook
import random
import os
import xlrd
import pandas as pd
 
class Answer:
    text: str
    truth: bool
 
    def __init__(self, text, truth=False):
        self.text = text
        self.truth = truth
 
    def __repr__(self):
        return f'{"*" if self.truth else ""} {self.text}'
 
class Question:
    text: str
    answers: list[Answer]
 
    def __init__(self, text: str, comment: str, answers: list[str]):
        self.text = text
        self.comment = comment
        self.answers = [Answer(i) for i in answers]
        self.answers[0].truth = True
        # Перемешиваем ответы
        random.shuffle(self.answers)
 
    def __repr__(self):
        return f'{self.text}: {"; ".join(map(lambda s: str(s), self.answers))}. ({self.desc})'
 
    def get_correct_answer(self):
        return [answ for answ in self.answers if answ.truth][0]
 
def main():
    # Загружаем файл Excel
    wb = openpyxl.load_workbook("voprosu.xlsx")
    sheet = wb["Лист1"]
 
    all_questions = [
        Question(row[1].value, row[6].value, [
            cell.value for cell in row[2:6]
        ])
        for i, row in enumerate(sheet.rows) if i != 0
    ]
 
    # Выбираем рандомные 5 вопросов
    questions = random.sample(all_questions, 5)
 
    # Играем в викторину
    score = 0
    for question in questions:
        # Выводим вопрос
        print(question.text)
        # Выводим варианты ответов
        for i, answer in enumerate(question.answers):
            print(f"{chr(ord('A') + i)}. {answer.text}")
 
        # Получаем ответ пользователя
        user_answer = input("Ваш ответ: ")
 
        # Проверяем ответ
        correct_answer = question.get_correct_answer()
        if user_answer == correct_answer.text:
            score += 1
            print("Правильно!")
        else:
            # Получаем комментарий к не правильному ответу
            print(question.comment)
 
    # Выводим результаты
    print("Ваш результат:", score, "правильных из", len(questions))
 
if __name__ == "__main__":
    main()
Вложения
Тип файла: xlsx voprosu.xlsx (9.2 Кб, 2 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2023, 12:43
Ответы с готовыми решениями:

Адаптировать код для мобильной версии сайта
Доброго времени суток. Имеется HMTL код, который распределяет картинку справа а текст слева. При просмотре через браузер обычного ПК то все...

Вывести данные из ВК бота в телеграмм бота
Добрый день, не могу вывести данные, а точнее посты с группы, из бота вк в телеграмм бота. Как лучше это сделать? Функции находятся в...

Настройка телеграмм бота
Всем привет! В общем хочу реализовать Отправку сообщения с сервера в группу в Telegram Нашел инструкцию ... На stackoverflow ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2023, 12:43
Помогаю со студенческими работами здесь

Дописать телеграмм бота
Есть рабочий телеграмм бот на python который показывает курс криптовалют Код: from telegram import Update from telegram.ext import...

Разработка телеграмм-бота на C#
Начал программирование телеграмм бота и уже в начале столкнулся с ошибкой.Ошибки: Ошибка CS1503 Аргумент 1: не удается преобразовать из...

Пишу бота на телеграмм
Пишу бота для телеграмма, подскажите пожалуйста как сделать меню для слова "фильм" (чтобы после нажатия на "фильм"...

Создание телеграмм бота
Помогите создать функцию которая будет выводить каждое второе слово предложение задом наперед.

Статистика бота телеграмм
Есть ли методы, которые позволяют вывести например: кол-во пользователей, кол-во пользователей, которые в онлайне и тд?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru