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

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

27.11.2023, 12:43. Показов 1211. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru