File size: 1,998 Bytes
ca86a9f 8b3bb66 478a01e aeb22f7 478a01e aeb22f7 de31048 aeb22f7 478a01e aeb22f7 a14df07 ca86a9f aeb22f7 c8174ca aeb22f7 c8174ca aeb22f7 b471485 aeb22f7 ca86a9f 70d951e aeb22f7 de31048 aeb22f7 2c06f05 aeb22f7 2c06f05 aeb22f7 2c06f05 aeb22f7 70d951e aeb22f7 |
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 |
import gradio as gr
import json
# JSON с вопросами, правильными ответами и текстом при неправильном ответе
json_data = """
{
"questions": [
{"text": "5+5=10", "correct_answer": "Верно", "wrong_answer_text": "Неправильно. Правильный ответ: А"},
{"text": "9+1=11", "correct_answer": "Не верно", "wrong_answer_text": "Неправильно. Правильный ответ: Б"}
]
}
"""
# Загрузка данных из JSON
data = json.loads(json_data)
# functions
def check(answers, questions_data):
results = []
for i, (answer, question_data) in enumerate(zip(answers, questions_data), start=1):
if answer == question_data['correct_answer']:
result = f"## {i}: ✔"
else:
result = f"## {i}: ✖️ ({question_data['wrong_answer_text']})"
results.append(result)
if i < len(questions_data): # Добавляем разделительную линию, кроме последнего элемента
results.append("___\n\n")
return "\n".join(results)
# Список вопросов
questions_data = data['questions']
# css
css = """
footer {visibility: hidden !important;}
"""
# ui
with gr.Blocks(css=css, theme='YTheme/TehnoX') as vui:
question_blocks = []
for i, question in enumerate(data['questions'], start=1):
with gr.Row():
with gr.Column():
radio = gr.Radio(label=f"Вопрос {i}", choices=["Верно", "Не верно"], info=question['text'])
question_blocks.append(radio)
text_button = gr.Button("Проверить", variant='primary')
with gr.Tab("Результаты"):
text_output = gr.Markdown("")
def on_click(*args):
return check(args, questions_data)
text_button.click(on_click, inputs=question_blocks, outputs=[text_output], queue=False)
#end
vui.launch() |