hbhamzabaig commited on
Commit
8f1690f
·
verified ·
1 Parent(s): 107af62

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +74 -0
app.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ def calculate_gpa(
4
+ w_assign, w_quiz, w_gdb, w_mid, w_final,
5
+ p_assign, p_quiz, p_gdb, p_mid, p_final
6
+ ):
7
+ weights_sum = w_assign + w_quiz + w_gdb + w_mid + w_final
8
+
9
+ if weights_sum != 100:
10
+ return "⚠️ Total weightage must be 100%", None
11
+
12
+ total_score = (
13
+ w_assign * p_assign +
14
+ w_quiz * p_quiz +
15
+ w_gdb * p_gdb +
16
+ w_mid * p_mid +
17
+ w_final * p_final
18
+ ) / 100
19
+
20
+ gpa = (total_score / 100) * 4
21
+ return f"{gpa:.2f}", gpa
22
+
23
+
24
+ with gr.Blocks(title="GPA Calculator") as app:
25
+ gr.Markdown("## 📊 GPA Calculator (Out of 4)")
26
+ gr.Markdown("Enter weightages and achieved percentages. Use the slider to simulate Final Term results.")
27
+
28
+ with gr.Row():
29
+ with gr.Column():
30
+ gr.Markdown("### Weightage (%)")
31
+ w_assign = gr.Number(value=10, label="Assignment")
32
+ w_quiz = gr.Number(value=10, label="Quiz")
33
+ w_gdb = gr.Number(value=10, label="GDB")
34
+ w_mid = gr.Number(value=30, label="Mid Term")
35
+ w_final = gr.Number(value=40, label="Final Term")
36
+
37
+ gr.Markdown("### Achieved Percentage (%)")
38
+ p_assign = gr.Number(value=80, label="Assignment")
39
+ p_quiz = gr.Number(value=85, label="Quiz")
40
+ p_gdb = gr.Number(value=90, label="GDB")
41
+ p_mid = gr.Number(value=75, label="Mid Term")
42
+
43
+ p_final = gr.Slider(
44
+ minimum=0,
45
+ maximum=100,
46
+ value=50,
47
+ step=1,
48
+ label="Final Term Percentage (Simulation)"
49
+ )
50
+
51
+ with gr.Column():
52
+ gr.Markdown("### 🎓 GPA")
53
+ gpa_text = gr.Textbox(label="GPA (Out of 4)", interactive=False)
54
+ gpa_bar = gr.Slider(minimum=0, maximum=4, value=0, interactive=False)
55
+
56
+ inputs = [
57
+ w_assign, w_quiz, w_gdb, w_mid, w_final,
58
+ p_assign, p_quiz, p_gdb, p_mid, p_final
59
+ ]
60
+
61
+ p_final.change(
62
+ calculate_gpa,
63
+ inputs=inputs,
64
+ outputs=[gpa_text, gpa_bar]
65
+ )
66
+
67
+ for inp in inputs[:-1]:
68
+ inp.change(
69
+ calculate_gpa,
70
+ inputs=inputs,
71
+ outputs=[gpa_text, gpa_bar]
72
+ )
73
+
74
+ app.launch()