arxivgpt kim commited on
Commit
5473873
Β·
verified Β·
1 Parent(s): 127f54e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -43
app.py CHANGED
@@ -4,57 +4,52 @@ import gradio as gr
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
- def calculate_score(*answers):
32
- total_score = 0
33
- for i, answer in enumerate(answers):
34
- # ν˜„μž¬ λ‹΅λ³€μ˜ 인덱슀λ₯Ό 찾음
35
- try:
36
- ans_index = options[i].index(answer)
37
- total_score += scores[i][ans_index]
38
- except ValueError:
39
- # μ—λŸ¬ 처리: 닡변이 μ˜΅μ…˜ λ¦¬μŠ€νŠΈμ— μ—†λŠ” 경우
40
- print(f"Error: μ„ νƒλœ μ˜΅μ…˜ '{answer}'κ°€ 문제 '{questions[i]}'의 μ˜΅μ…˜ λ¦¬μŠ€νŠΈμ— μ—†μŠ΅λ‹ˆλ‹€.")
41
- feedback = f"총 μ μˆ˜λŠ” {total_score}μ μž…λ‹ˆλ‹€."
42
- return total_score, feedback
43
-
44
-
45
- with gr.Blocks() as demo:
46
- with gr.Tabs():
47
- for i in range(1, 4): # 총 3개의 νƒ­(νŽ˜μ΄μ§€) 생성
48
- with gr.TabItem(f"문제 μ„ΈνŠΈ {i}"):
49
- # ν˜„μž¬ νŽ˜μ΄μ§€μ— ν•΄λ‹Ήν•˜λŠ” λ¬Έμ œμ™€ 선택지 μΆ”μΆœ
50
- current_questions = questions[(i-1)*2:i*2]
51
- current_options = options[(i-1)*2:i*2]
52
- inputs = [gr.Radio(label=ques, choices=opts, value=0) for ques, opts in zip(current_questions, current_options)]
53
- if i < 3:
54
- next_button = gr.Button(f"λ‹€μŒ: 문제 μ„ΈνŠΈ {i+1}")
55
- next_button.click(None, inputs, gr.Tab(f"문제 μ„ΈνŠΈ {i+1}"))
56
- else:
57
- submit_button = gr.Button("제좜")
58
- submit_button.click(calculate_score, inputs, [gr.Number(label="총 점수"), gr.Text(label="ν”Όλ“œλ°±")])
59
-
60
- demo.launch()
 
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
+ [1, 2, 3],
24
+ [3, 2, 1],
25
+ [2, 3, 1],
26
+ [4, 3, 2, 1],
27
+ [3, 2, 1],
28
+ [2, 3, 1]
29
  ]
30
 
31
+ # 점수 계산 ν•¨μˆ˜
32
+ def calculate_score(answers):
33
+ total_score = sum([scores[i][options[i].index(ans)] for i, ans in enumerate(answers)])
34
+ return f"총점: {total_score}"
35
+
36
+ # νŽ˜μ΄μ§€λ‹Ή 문제 수
37
+ questions_per_page = 2
38
+ total_pages = len(questions) // questions_per_page
39
+
40
+ def create_page(page_num):
41
+ page_questions = questions[page_num*questions_per_page:(page_num+1)*questions_per_page]
42
+ page_options = options[page_num*questions_per_page:(page_num+1)*questions_per_page]
43
+ inputs = [gr.Radio(label=ques, choices=opts) for ques, opts in zip(page_questions, page_options)]
44
+ if page_num == total_pages - 1: # λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€μ—μ„œλŠ” κ²°κ³Όλ₯Ό 좜λ ₯
45
+ return gr.Interface(fn=calculate_score, inputs=inputs, outputs="text")
46
+ else: # λ‹€λ₯Έ νŽ˜μ΄μ§€μ—μ„œλŠ” λ‹€μŒ νŽ˜μ΄μ§€ 링크 제곡
47
+ return gr.Interface(fn=lambda *args: None, inputs=inputs, outputs=None)
48
+
49
+ # 각 νŽ˜μ΄μ§€μ— λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€ 생성 및 μ‹€ν–‰
50
+ pages = [create_page(i) for i in range(total_pages)]
51
+ for page in pages:
52
+ page.launch()
53
+
54
+
55
+