Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,240 +1,52 @@
|
|
1 |
import gradio as gr
|
2 |
-
import matplotlib.pyplot as plt
|
3 |
-
import numpy as np
|
4 |
-
import requests
|
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 |
-
["ํ๋ซํผ/์๋น์ค ์ด์ฉ๊ธฐ๊ฐ์ด 1๋
์ด์ ์
๋๋ค ","ํ๋ซํผ/์๋น์ค ์ด์ฉ๊ธฐ๊ฐ์ด 1๋
๋ฏธ๋ง ์
๋๋ค","ํ๋ซํผ/์๋น์ค ์ด์ฉ๊ธฐ๊ฐ์ด 6๊ฐ์ ๋ฏธ๋ง ์
๋๋ค"],
|
57 |
-
["๊ธ๋ก๋ฒTOP ์์ค.์ฌ๋ก์ฐ๋ฏธ์คํธ/์จํฑ ๋ฑ ์์30% ๊ธฐ๊ด์ ํตํ ํ๊ฐ๋ฅผ ๋ฐ์์ต๋๋ค ","์ผ๋ฐ์์ค์ ๋ณด์๊ฐ์ฌ๊ธฐ๊ด์ ํตํ ํ๊ฐ๋ฅผ ๋ฐ์์ต๋๋ค","๋ณด์๊ฐ์ฌ์๊ฐ ์์ต๋๋ค."],
|
58 |
-
["๋ณด์๊ฐ์ฌ์
์ฒด ํํ์ด์ง, ์ฝ์ธ๋ง์ผ๊ฐญ ๋ฑ ์ฌ์ดํธ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค ","๊ณต๊ฐ๋์ด ์์ง ์์ต๋๋ค"],
|
59 |
-
["๋ค ","์๋์ค"],
|
60 |
-
["๋ค ", "์๋์ค"],
|
61 |
-
["๋ด๋ถ ์ง์ ์ค CISO ๋ฑ๋ก๋ ์์์ด ์๋ค ","๋ด๋ถ ์ง์ ์ค ๊ฐ์ธ์ ๋ณด๋ณดํธ๋ฅผ ์ํ ๊ด๋ฆฌ์๊ฐ ์๋ค", "์์"],
|
62 |
-
["์จ์ฒด์ธ ๋ฐ์ดํฐ ์ ๋ํ๋ ์งํ์์ ์์ด์์ 500์ ์ด๋ด์ธ๊ฐ?(์ ํ) ","์จ์ฒด์ธ ๋ฐ์ดํฐ ์ ๋ํ๋์ ๋ํ๋ ์งํ์์ ์์ด์์ 500์ ์ด์ 1,000์ ๋ฏธ๋ง์ธ๊ฐ?(์ ํ)","์จ์ฒด์ธ ๋ฐ์ดํฐ ์ ๋ํ๋ ์งํ์์ ์์ด์์ 1,000์ ์ด์ 5,000์ ๋ฏธ๋ง์ธ๊ฐ?(์ ํ)","์จ์ฒด์ธ ๋ฐ์ดํฐ ์ ๋ํ๋ ์งํ์์ ์์ด์์ 5,000์ ์ด๊ณผ(๋๋ ๋ฏธํ์)์ธ๊ฐ?(์ ํ)","์ฝ์ธ๋ง์ผ๊ฐญ, ์ฝ์ธ๊ฒ์ฝ ์ธ ๋ค๋ฅธ ๊ณณ(DEX ํฌํจ)์์ ์จ์ฒด์ธ ๋ฐ์ดํฐ ์์ด ์์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค","์์"],
|
63 |
-
["์์ฅ๊ฐ ๊ธฐ์ค 31% ์ด์ ์์น ์ ์ง(๊ฑฐ๋์๋ณต์์ ์ต๋๊ฑฐ๋๋ ๊ฑฐ๋์ ๊ธฐ์ค) ","์์ฅ๊ฐ ๊ธฐ์ค -30~+30% ์ ์ง(๊ฑฐ๋์๋ณต์์ ์ต๋๊ฑฐ๋๋ ๊ฑฐ๋์ ๊ธฐ์ค)","์์ฅ๊ฐ ๊ธฐ์ค -31% ์ด์ ํ๋ฝ(๊ฑฐ๋์๋ณต์์ ์ต๋๊ฑฐ๋๋ ๊ฑฐ๋์ ๊ธฐ์ค)"],
|
64 |
-
["์ ๋ฌผ/์๊ตฌ ๋ง์ผ์ ๋ฑ๋ก๋์ด ์์ต๋๋ค ","FIAT ๋ง์ผ(1๊ฐ ๊ธฐ์ค) ํฌํจ 10๊ฐ ๋ฏธ๋ง์ ํ๋ฌผ ๋ง์ผ์ ๋ฑ๋ก๋์ด ์์ต๋๋ค","์ค์ํ ๊ฑฐ๋์์ ๋ฑ๋ก๋์ด ์์ต๋๋ค","DEX ๊ฑฐ๋์์ ๋ฑ๋ก๋์ด ์์ต๋๋ค"],
|
65 |
-
["์ง๋ 52์ฃผ๊ฐ ์์น์ถ์ธ์ ํ๋ฆ์ ๋ณด์ด๊ณ ์์ต๋๋ค ","์ง๋ 52์ฃผ๊ฐ ์ผ์ ํ ์์ค์ ํ๋ฆ์ ๋ณด์ด๊ณ ์์ต๋๋ค","์ง๋ 52์ฃผ๊ฐ ํ๋ฝ์ถ์ธ์ ํ๋ฆ์ ๋ณด์ด๊ณ ์์ต๋๋ค"],
|
66 |
-
["100,000 ์ด์์
๋๋ค ","50,000 ์ด์ 100,000 ๋ฏธ๋ง์
๋๋ค","10,000 ์ด์ 50,000 ๋ฏธ๋ง์
๋๋ค","1,000 ์ด์ 10,000๋ช
๋ฏธ๋ง์
๋๋ค","1,000 ๋ฏธ๋ง์
๋๋ค"],
|
67 |
-
["์ฝ์ธ๋ง์ผ์บก ๋๋ ์ฝ์ธ๊ฒ์ฝ ๋ฑ์ ๊ณต๊ฐํ๊ณ ์์ต๋๋ค ","์์ฒด์ปค๋ฎค๋ํฐ์ ํ์คํ ๋ฆฌ๋ฅผ ๊ณต๊ฐํ๊ณ ์์ต๋๋ค","ํํ์ด์ง ๋๋ ๋ฐฑ์์์๋ง ํ์คํ ๋ฆฌ๋ฅผ ๊ณต๊ฐํ๊ณ ์์ต๋๋ค"],
|
68 |
-
["๋ง์ผ์คํค ๋ฌ์ฑ 70% ์ด์์ ๋ฌ์ฑ ์ค์
๋๋ค ","๋ง์ผ์คํค ๋ฌ์ฑ 20% ์ด์ 70% ๋ฏธ๋ง์ ๋ฌ์ฑ ์ค์
๋๋ค","๋ง์ผ์คํค ๋ฌ์ฑ 20% ๋ฏธ๋ง์ ๋ฌ์ฑ ์ค์
๋๋ค"],
|
69 |
-
["์ฌ๋จ ๋ฐ ์ด์ฉ์ฌ(์ง๋ฐฐ๊ตฌ์กฐ ํฌํจ)์ด IPO(์์ฅ) ๋ฒ์ธ ","์ฌ๋จ ๋ฐ ์ด์ฉ์ฌ(์ง๋ฐฐ๊ตฌ์กฐ ํฌํจ)์ด ์ธ๊ฐ ๋๋ ๋ฒ๋ฅ ๋ฑ๋ก(์, ์ ์๊ธ์ต์
์, VASP ๋ฑ)๋ฒ์ธ","์ฌ๋จ ๋ฐ ์ด์ฉ์ฌ(์ง๋ฐฐ๊ตฌ์กฐ ํฌํจ)์ด ์ผ๋ฐ ๋ฒ์ธ"],
|
70 |
-
["๊ธ๋ก๋ฒ ์์ค์ ๋ฐ์ด๋ ์ ๋ฌธ์ฑ๊ณผ ์ํฅ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค ","๋ก์ปฌ ์์ค์ ์ ๋ฌธ์ฑ๊ณผ ์ํฅ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค"],
|
71 |
-
["1๋
์ด์ ","1๋
์ด๋ด","6๊ฐ์ ์ด๋ด"]
|
72 |
-
]
|
73 |
-
|
74 |
-
scores = [[1, 0],
|
75 |
-
[3, 2, 1],
|
76 |
-
[2, 1.5, 1],
|
77 |
-
[1, 0],
|
78 |
-
[1, 0],
|
79 |
-
[3, 2, 1, 0],
|
80 |
-
[3, 2, 1, 0],
|
81 |
-
[3, 2, 1, 0],
|
82 |
-
[2, 1, 0],
|
83 |
-
[3, 2, 1],
|
84 |
-
[2, 1, 0],
|
85 |
-
[3, 2, 1],
|
86 |
-
[1, 0],
|
87 |
-
[2, 1, 0],
|
88 |
-
[3, 2, 1],
|
89 |
-
[2, 1, 0],
|
90 |
-
[2, 1, 0],
|
91 |
-
[1, 0],
|
92 |
-
[1, 0],
|
93 |
-
[1, 0],
|
94 |
-
[2, 1, 0],
|
95 |
-
[3, 2.5, 2, 1.5, 1, 0],
|
96 |
-
[3, 2, 1],
|
97 |
-
[4, 3, 2, 1],
|
98 |
-
[1, 0.5, 0],
|
99 |
-
[5, 4, 3, 2, 1],
|
100 |
-
[1.5, 1, 0.5],
|
101 |
-
[1.5, 1, 0.5],
|
102 |
-
[3, 2, 1],
|
103 |
-
[2, 1],
|
104 |
-
[3, 2, 1]
|
105 |
-
]
|
106 |
-
|
107 |
-
mquestions = [ "32. ํ ํฐ ์ ํต๊ด๋ จ ํฌ์์ ๋ณดํธ๋ฅผ ์ํ ์ค๋น์ํ๋ฅผ ๋ชจ๋ ์ ํํด์ฃผ์ธ์."]
|
108 |
-
moptions = [["์ธ๋ถ ์์น(์ปค์คํฐ๋) ์ ์ฉํ์์ต๋๋ค", "์ฌ๋จ ๋ฝ์
์คํ
์ดํน์ ํ๊ณ ์์ต๋๋ค", "๋น
ํ๋ ๋ฝ์
์คํ
์ดํน์ ํ๊ณ ์์ต๋๋ค", "ํด๋น์ฌํญ ์์ต๋๋ค"]]
|
109 |
-
mscores = [[1, 1, 1, 0]]
|
110 |
-
|
111 |
-
|
112 |
-
def get_grade(total_score):
|
113 |
-
converted_score = (total_score)
|
114 |
-
|
115 |
-
grades = {
|
116 |
-
'์': (65.7, 73, "๋ฑ๊ธ์ ์๏ผ ๋งค์ฐ ์ํธํ ํ๋ก์ ํธ ์ํ ์ญ๋๊ณผ ์งํ์ ๋ณด์ด๊ณ ์์ผ๋ฉฐ ํฅํ ๋ฐ์ ๊ฐ๋ฅ์ฑ๊ณผ ์ง์์ฑ ์ญ์ ๋์ ๊ฒ์ผ๋ก ํ๏ฟฝ๏ฟฝ๏ฟฝ๋ฉ๋๋ค.๋์ธ์ ์ธ ํ๊ฒฝ ๋ณํ์๋ ์ ์ฐํ ๋์๊ณผ ๋ณต์๋ ฅ์ ๋ณด์ ํ๊ณ ์๋ ๊ฒ์ผ๋ก ํ๋จ๋ฉ๋๋ค."),
|
117 |
-
'์ฐ': (51.1, 65.6, "๋ฑ๊ธ์ ์๏ผ ํ๋ก์ ํธ ์ํ ์ญ๋๊ณผ ์งํ์ด ์
๊ณ ํ๊ท ์์ค์ผ๋ก ๋ชฉํ๋ฌ์ฑ ๋ฅ๋ ฅ์ด ์๊ณ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ด ์๋ ๊ฒ์ผ๋ก ํ๋จ๋ฉ๋๋ค. ์ ์ ํ ์ด๋๋ฐ์ด์ ์ ์ญ๋ ์กฐ์ฑ์ ๊ฐํํ๋ค๋ฉด ๋ณด๋ค ๋ฐ์ ์ ์ธ ์ํฉ์ผ๋ก ํ๋ก์ ํธ ์ํ์ด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ํ๋จ๋ฉ๋๋ค."),
|
118 |
-
'๋ฏธ': (29.2, 51, "๋ฑ๊ธ์ ์๏ผ ํ๋ก์ ํธ์ ๊ธฐ์ ์ ํ๋น์ฑ ๋ฐ ๋น์ฆ๋์ค ๋ชจ๋ธํ๊ฐ์์ ๋ฏธํกํ ํจ์๊ฐ ์กด์ฌํฉ๋๋ค. ํ์ฌ ํ๋ก์ ํธ ์ํ์ ๊ฐ๋ฅํ๋ ์ํ์ฑ์ด ์กด์ฌํฉ๋๋ค. ๋ถ์กฑํ ๋ถ๋ถ์ ๋ํ ๋ณด์๊ณผ ์ปจ์คํ
์ด ํ์ํฉ๋๋ค."),
|
119 |
-
'์': (21.9, 29.1, "๋ฑ๊ธ์ ์๏ผ ํ๋ก์ ํธ์ ์์์ ๊ฐ๋ฅํ๋ ์ฌ๋ฌ ์ํ ์์๊ฐ ์ฐ์ฌ๋์ด ์๊ธฐ์ ์ํ์ด ์ฌ์ค์ ๋ถ๊ฐ๋ฅํ ์์ค์ผ๋ก ํ๋จ๋ฉ๋๋ค. ๋ณด๋ค ๊ทผ๋ณธ์ ์ธ ๊ฒํ ๊ฐ ํ์ํ ๊ฒ์ผ๋ก ํ๋จ๋ฉ๋๋ค. ์์ฅ์ ์ํ ์ปจ์คํ
์ด ๋ฐ๋์ ํ์ํฉ๋๋ค."),
|
120 |
-
'๊ฐ': (0, 21.8, "๋ฑ๊ธ์ ์๏ผ ํ๋ก์ ํธ์ ์์์ ๊ฐ๋ฅํ๋ ์ฌ๋ฌ ์ํ ์์๊ฐ ์ฐ์ฌ๋์ด ์๊ธฐ์ ์ํ์ด ์ฌ์ค์ ๋ถ๊ฐ๋ฅํ ์์ค์ผ๋ก ํ๋จ๋ฉ๋๋ค. ๋ณด๋ค ๊ทผ๋ณธ์ ์ธ ๊ฒํ ๊ฐ ํ์ํ ๊ฒ์ผ๋ก ํ๋จ๋ฉ๋๋ค. ์์ฅ์ ์ํ ์ปจ์คํ
์ด ๋ฐ๋์ ํ์ํฉ๋๋ค.")
|
121 |
-
}
|
122 |
-
|
123 |
-
for grade, (low, high, definition) in grades.items():
|
124 |
-
if low <= converted_score <= high:
|
125 |
-
return grade, definition # ๋ฑ๊ธ๊ณผ ์ ์๋ฅผ ํจ๊ป ๋ฐํ
|
126 |
-
return "No Grade", "" # ๋ฑ๊ธ์ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
# ์ฐจํธ๋ฅผ ์์ฑํ๊ณ ์ ์๋ฅผ ๊ณ์ฐํ๋ ํจ์
|
131 |
-
def create_charts(project_name, contact_email, contact_number, *args):
|
132 |
-
# Separate radio and checkbox choices
|
133 |
-
radio_choices = args[:-1] # All except last argument
|
134 |
-
checkbox_choices = args[-1] # Last argument
|
135 |
-
|
136 |
-
# Zapier Webhook URL
|
137 |
-
webhook_url = "https://hooks.zapier.com/hooks/catch/14523965/3egrs04/"
|
138 |
-
|
139 |
-
# ์ ์กํ ๋ฐ์ดํฐ ๊ตฌ์ฑ
|
140 |
-
data = {
|
141 |
-
"project_name": project_name,
|
142 |
-
"contact_email": contact_email,
|
143 |
-
"contact_number": contact_number,
|
144 |
-
"responses": args
|
145 |
-
}
|
146 |
-
|
147 |
-
# Zapier Webhook์ผ๋ก ๋ฐ์ดํฐ ์ ์ก
|
148 |
-
response = requests.post(webhook_url, json=data)
|
149 |
-
|
150 |
-
|
151 |
-
total_score = 0
|
152 |
-
choice_scores = []
|
153 |
-
labels = []
|
154 |
-
|
155 |
-
# Calculate score and labels for radio choices
|
156 |
-
for i, choice in enumerate(radio_choices):
|
157 |
-
if choice in options[i]:
|
158 |
-
total_score += scores[i][options[i].index(choice)]
|
159 |
-
choice_scores.append(scores[i][options[i].index(choice)])
|
160 |
-
labels.append(options[i][options[i].index(choice)])
|
161 |
-
|
162 |
-
# Calculate score and labels for checkbox choices
|
163 |
-
for choice in checkbox_choices:
|
164 |
-
for mopt, mscore in zip(moptions, mscores):
|
165 |
-
if choice in mopt:
|
166 |
-
total_score += mscore[mopt.index(choice)]
|
167 |
-
choice_scores.append(mscore[mopt.index(choice)])
|
168 |
-
labels.append(choice)
|
169 |
-
|
170 |
-
|
171 |
-
# ์ต์ข
์ ์๋ฅผ ๋ฐํ์ผ๋ก ๋ฑ๊ธ ๊ฒฐ์
|
172 |
-
# grade = get_grade(total_score)
|
173 |
-
|
174 |
-
grade, definition = get_grade(total_score)
|
175 |
-
|
176 |
-
|
177 |
-
# Create various plots
|
178 |
-
fig, axs = plt.subplots(2, 2, figsize=(40, 30)) # ์๋ธํ๋กฏ ๊ทธ๋ฆฌ๋๋ฅผ 2x2๋ก ์ ์ง
|
179 |
-
|
180 |
-
|
181 |
-
# Bar chart for total score
|
182 |
-
axs[0, 0].bar(["Total Score"], [total_score])
|
183 |
-
axs[0, 0].set_ylim(0, max(72, total_score + 10))
|
184 |
-
|
185 |
-
# Pie chart for individual choice scores
|
186 |
-
axs[0, 1].pie(choice_scores, labels=labels, autopct='%1.1f%%', startangle=140)
|
187 |
-
|
188 |
-
# Line chart for choice scores over time
|
189 |
-
axs[1, 0].plot(choice_scores, marker='o') # ์์ ๋ ์ธ๋ฑ์ค ์ฌ์ฉ
|
190 |
-
axs[1, 0].set_title("Score Over Time")
|
191 |
-
|
192 |
-
# Area chart for choice scores
|
193 |
-
axs[1, 1].stackplot(range(len(choice_scores)), choice_scores) # ์์ ๋ ์ธ๋ฑ์ค ์ฌ์ฉ
|
194 |
-
axs[1, 1].set_title("Area Chart")
|
195 |
-
|
196 |
-
plt.tight_layout()
|
197 |
-
fig = plt.gcf()
|
198 |
-
|
199 |
-
|
200 |
-
plt.figure()
|
201 |
-
plt.bar(range(len(choice_scores)), choice_scores)
|
202 |
-
plt.xlabel('Choices')
|
203 |
-
plt.ylabel('Scores')
|
204 |
-
plt.title('Scores for Choices')
|
205 |
-
plt.show()
|
206 |
-
|
207 |
-
return fig, total_score, f"{grade} ({definition})" # ๋ฑ๊ธ๊ณผ ๋ฑ๊ธ ์ ์๋ฅผ ํจ๊ป ๋ฐํ
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
css = """
|
212 |
-
footer {
|
213 |
-
visibility: hidden;
|
214 |
-
}
|
215 |
-
"""
|
216 |
-
|
217 |
-
# Gradio ์ธํฐํ์ด์ค ์ ์
|
218 |
-
iface = gr.Interface(
|
219 |
-
fn=create_charts,
|
220 |
-
inputs=[
|
221 |
-
gr.Textbox(label="ํ๋ก์ ํธ ๋ช
์นญ(ํ ํฐ๋ช
)"),
|
222 |
-
gr.Textbox(label="๋ด๋น์ ์ฑํจ"),
|
223 |
-
gr.Textbox(label="๋ด๋น์ ์ด๋ฉ์ผ"),
|
224 |
-
gr.Textbox(label="๋ด๋น์ ์ฐ๋ฝ์ฒ")
|
225 |
-
] + [
|
226 |
-
gr.Radio(choices=opts, label=ques) for ques, opts in zip(questions, options)
|
227 |
-
] + [
|
228 |
-
gr.CheckboxGroup(choices=mopts, label=mques) for mques, mopts in zip(mquestions, moptions)
|
229 |
-
],
|
230 |
-
outputs=[
|
231 |
-
gr.Plot(),
|
232 |
-
gr.Number(label="์ต์ข
์ ์(73์ ๋ง์ )"),
|
233 |
-
gr.Text(label="๋ฑ๊ธ")
|
234 |
-
],
|
235 |
-
title=" Korating: SELF(์๊ฐ) ์ง๋จ ์๋น์ค",
|
236 |
-
description = " ๋์งํธ์์ฐ ์ธ์ฆํ๊ฐ์ ๋ฆฌ๋์ธ '์ฝ๋ ์ดํ
'์ '๊ฐ์์์ฐ ์
ํ ์๊ฐ์ง๋จ' ์๋น์ค๋, ํฌ์์ ๋ณดํธ ๋ฐ ๊ฑด์ ํ ๊ฐ์์์ฐ ์ํ๊ณ ๊ตฌ์ถ์ ์ง์ํฉ๋๋ค.",
|
237 |
-
css=css # CSS ์คํ์ผ ์ ์ฉ
|
238 |
-
)
|
239 |
-
|
240 |
-
iface.launch()
|
|
|
1 |
import gradio as gr
|
|
|
|
|
|
|
2 |
|
3 |
+
# ์์ ๋ฌธ์ , ์ ํ์ง, ์ ์ ์ ์
|
4 |
+
questions = [
|
5 |
+
"1. ๋น์ ์ ์ข์ํ๋ ์์ ๋ฌด์์ธ๊ฐ์?",
|
6 |
+
"2. ์ฃผ๋ง์ ๊ฐ์ฅ ํ๊ณ ์ถ์ ํ๋์?",
|
7 |
+
"3. ์ข์ํ๋ ๊ณ์ ์?",
|
8 |
+
"4. ์ ํธํ๋ ์์ ์ข
๋ฅ๋?",
|
9 |
+
"5. ์ฝ๊ณ ์ถ์ ์ฑ
์ ์ฅ๋ฅด๋?",
|
10 |
+
"6. ์ฌํ ๊ฐ๊ณ ์ถ์ ๊ณณ์?"
|
11 |
+
]
|
12 |
+
|
13 |
+
options = [
|
14 |
+
["๋นจ๊ฐ", "ํ๋", "์ด๋ก"],
|
15 |
+
["์ฐ์ฑ
ํ๊ธฐ", "์ํ ๋ณด๊ธฐ", "์ฑ
์ฝ๊ธฐ"],
|
16 |
+
["๋ด", "์ฌ๋ฆ", "๊ฐ์", "๊ฒจ์ธ"],
|
17 |
+
["ํ์", "์ค์", "์์", "์ผ์"],
|
18 |
+
["์์ค", "์๊ธฐ๊ณ๋ฐ", "์ญ์ฌ", "๊ณผํ"],
|
19 |
+
["์ฐ", "๋ฐ๋ค", "๋์", "์๊ณจ"]
|
20 |
+
]
|
21 |
+
|
22 |
+
scores = [
|
23 |
+
[10, 20, 30],
|
24 |
+
[30, 20, 10],
|
25 |
+
[15, 15, 15, 15],
|
26 |
+
[25, 25, 25, 25],
|
27 |
+
[10, 20, 30, 40],
|
28 |
+
[40, 30, 20, 10]
|
29 |
+
]
|
30 |
+
|
31 |
+
# ์ฌ์ฉ์์ ์ ํ์ ๋ฐ๋ฅธ ์ ์๋ฅผ ํฉ์ฐํ์ฌ ๋ฑ๊ธ์ ๊ฒฐ์ ํ๋ ํจ์
|
32 |
+
def calculate_score(*answers):
|
33 |
+
total_score = sum([scores[i][ans] for i, ans in enumerate(answers)])
|
34 |
+
feedback = f"์ด ์ ์๋ {total_score}์ ์
๋๋ค."
|
35 |
+
return total_score, feedback
|
36 |
+
|
37 |
+
with gr.Blocks() as demo:
|
38 |
+
with gr.Tabs():
|
39 |
+
for i in range(1, 4): # ์ด 3๊ฐ์ ํญ(ํ์ด์ง) ์์ฑ
|
40 |
+
with gr.TabItem(f"๋ฌธ์ ์ธํธ {i}"):
|
41 |
+
# ํ์ฌ ํ์ด์ง์ ํด๋นํ๋ ๋ฌธ์ ์ ์ ํ์ง ์ถ์ถ
|
42 |
+
current_questions = questions[(i-1)*2:i*2]
|
43 |
+
current_options = options[(i-1)*2:i*2]
|
44 |
+
inputs = [gr.Radio(label=ques, choices=opts, value=0) for ques, opts in zip(current_questions, current_options)]
|
45 |
+
if i < 3:
|
46 |
+
next_button = gr.Button(f"๋ค์: ๋ฌธ์ ์ธํธ {i+1}")
|
47 |
+
next_button.click(None, inputs, gr.Tab(f"๋ฌธ์ ์ธํธ {i+1}"))
|
48 |
+
else:
|
49 |
+
submit_button = gr.Button("์ ์ถ")
|
50 |
+
submit_button.click(calculate_score, inputs, [gr.Number(label="์ด ์ ์"), gr.Text(label="ํผ๋๋ฐฑ")])
|
51 |
+
|
52 |
+
demo.launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|