Hidayatmahar commited on
Commit
7c99fd5
·
verified ·
1 Parent(s): eb46830

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -15
app.py CHANGED
@@ -2,16 +2,12 @@ import random
2
  import gradio as gr
3
  from question_bank import question_bank
4
 
5
- # Select 50 random questions from the full bank
6
  def get_random_questions(n=50):
7
  return random.sample(question_bank, n)
8
 
9
- # Grade test
10
- def grade_test(responses, name, roll_number):
11
  score = 0
12
  feedback = []
13
- selected = gr.get_state("selected_questions")
14
-
15
  for idx, (resp, q) in enumerate(zip(responses, selected)):
16
  correct = q["answer"]
17
  if resp == q["options"][correct]:
@@ -28,19 +24,17 @@ def grade_test(responses, name, roll_number):
28
  """
29
  return result, "\n".join(feedback)
30
 
31
- # Build Gradio UI
32
  def build_app():
33
  with gr.Blocks() as demo:
34
- gr.Markdown("# 🧪 Random Preventive Maintenance Test")
35
- gr.Markdown("50 questions selected from a large question bank.")
36
 
37
  with gr.Row():
38
  name = gr.Textbox(label="Your Full Name")
39
  roll_number = gr.Textbox(label="Roll Number")
40
 
41
- # Randomly load 50 questions
42
  selected_questions = get_random_questions()
43
- gr.set_state("selected_questions", selected_questions)
44
 
45
  mcq_inputs = []
46
  for q in selected_questions:
@@ -51,14 +45,15 @@ def build_app():
51
  feedback_box = gr.Markdown()
52
 
53
  def on_submit(*args):
54
- answers = args[:-2]
55
- name = args[-2]
56
- roll_number = args[-1]
57
- return grade_test(answers, name, roll_number)
 
58
 
59
  submit_btn.click(
60
  fn=on_submit,
61
- inputs=mcq_inputs + [name, roll_number],
62
  outputs=[result_box, feedback_box]
63
  )
64
 
 
2
  import gradio as gr
3
  from question_bank import question_bank
4
 
 
5
  def get_random_questions(n=50):
6
  return random.sample(question_bank, n)
7
 
8
+ def grade_test(responses, name, roll_number, selected):
 
9
  score = 0
10
  feedback = []
 
 
11
  for idx, (resp, q) in enumerate(zip(responses, selected)):
12
  correct = q["answer"]
13
  if resp == q["options"][correct]:
 
24
  """
25
  return result, "\n".join(feedback)
26
 
 
27
  def build_app():
28
  with gr.Blocks() as demo:
29
+ gr.Markdown("# 🧪 Preventive Maintenance Test")
30
+ gr.Markdown("50 random questions selected from a large question bank.")
31
 
32
  with gr.Row():
33
  name = gr.Textbox(label="Your Full Name")
34
  roll_number = gr.Textbox(label="Roll Number")
35
 
 
36
  selected_questions = get_random_questions()
37
+ selected_state = gr.State(selected_questions)
38
 
39
  mcq_inputs = []
40
  for q in selected_questions:
 
45
  feedback_box = gr.Markdown()
46
 
47
  def on_submit(*args):
48
+ answers = args[:-3]
49
+ name = args[-3]
50
+ roll_number = args[-2]
51
+ selected = args[-1]
52
+ return grade_test(answers, name, roll_number, selected)
53
 
54
  submit_btn.click(
55
  fn=on_submit,
56
+ inputs=mcq_inputs + [name, roll_number, selected_state],
57
  outputs=[result_box, feedback_box]
58
  )
59