Hidayatmahar commited on
Commit
da2b17f
·
verified ·
1 Parent(s): e4781f3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -0
app.py CHANGED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+
3
+ import gradio as gr
4
+ from questions import questions
5
+
6
+ def grade_test(responses, name, roll_number):
7
+ score = 0
8
+ feedback = []
9
+
10
+ for idx, (resp, q) in enumerate(zip(responses, questions)):
11
+ correct = q["answer"]
12
+ if resp == q["options"][correct]:
13
+ score += 1
14
+ feedback.append(f"Q{idx+1}: ✅ Correct")
15
+ else:
16
+ feedback.append(f"Q{idx+1}: ❌ Incorrect (Correct: {q['options'][correct]})")
17
+
18
+ result = f"""
19
+ **Name**: {name}
20
+ **Roll Number**: {roll_number}
21
+ **Score**: {score} / {len(questions)}
22
+ **Percentage**: {round((score / len(questions)) * 100, 2)}%
23
+ """
24
+ return result, "\n".join(feedback)
25
+
26
+ def get_test_ui():
27
+ with gr.Blocks() as demo:
28
+ gr.Markdown("# 🧪 Preventive Maintenance Program Test")
29
+ gr.Markdown("**Guide for Small Public Water Systems Using Groundwater (DOH 331-351)**")
30
+
31
+ with gr.Row():
32
+ name = gr.Textbox(label="Your Full Name")
33
+ roll_number = gr.Textbox(label="Roll Number")
34
+
35
+ mcq_inputs = []
36
+ for q in questions:
37
+ mcq_inputs.append(gr.Radio(choices=q["options"], label=q["question"], interactive=True))
38
+
39
+ submit_btn = gr.Button("Submit Test")
40
+
41
+ result_box = gr.Markdown()
42
+ feedback_box = gr.Markdown()
43
+
44
+ def on_submit(*args):
45
+ answers = args[:-2]
46
+ name = args[-2]
47
+ roll_number = args[-1]
48
+ return grade_test(answers, name, roll_number)
49
+
50
+ submit_btn.click(
51
+ on_submit,
52
+ inputs=mcq_inputs + [name, roll_number],
53
+ outputs=[result_box, feedback_box]
54
+ )
55
+
56
+ return demo
57
+
58
+ demo = get_test_ui()
59
+
60
+ if __name__ == "__main__":
61
+ demo.launch()