File size: 3,627 Bytes
4429898
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eb0dc0c
4429898
eb0dc0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4429898
 
 
 
 
 
 
7ab42d5
 
4429898
 
eb0dc0c
4429898
 
 
 
 
1
2
3
4
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import gradio as gr

# 질문 리슀트
questions = [
    "질문 1: μƒˆλ‘œμš΄ ν™˜κ²½μ—μ„œ 당신은 μ–΄λ–»κ²Œ ν–‰λ™ν•˜λ‚˜μš”?",
    "질문 2: 문제λ₯Ό ν•΄κ²°ν•  λ•Œ λ‹Ήμ‹ μ˜ μ ‘κ·Ό 방식은 λ¬΄μ—‡μΈκ°€μš”?",
    "질문 3: μ—¬κ°€ μ‹œκ°„μ„ 보낼 λ•Œ λ‹Ήμ‹ μ˜ μ„ ν˜ΈλŠ” λ¬΄μ—‡μΈκ°€μš”?",
    "질문 4: 결정을 내릴 λ•Œ μ€‘μš”ν•˜κ²Œ μƒκ°ν•˜λŠ” 것은 λ¬΄μ—‡μΈκ°€μš”?",
    "질문 5: ν”„λ‘œμ νŠΈλ₯Ό μˆ˜ν–‰ν•  λ•Œ λ‹Ήμ‹ μ˜ μŠ€νƒ€μΌμ€ μ–΄λ–€κ°€μš”?",
    "질문 6: 슀트레슀λ₯Ό 받을 λ•Œ λ‹Ήμ‹ μ˜ λŒ€μ²˜ 방식은?",
    "질문 7: λ‹€λ₯Έ μ‚¬λžŒκ³Όμ˜ κ΄€κ³„μ—μ„œ 당신은 μ–΄λ–€ νƒ€μž…μΈκ°€μš”?",
    "질문 8: μƒˆλ‘œμš΄ μ•„μ΄λ””μ–΄λ‚˜ 이둠을 μ ‘ν•  λ•Œ λ‹Ήμ‹ μ˜ λ°˜μ‘μ€?",
    "질문 9: 일상적인 결정을 내릴 λ•Œ 당신은 μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?",
    "질문 10: νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ λ‹Ήμ‹ μ˜ 역할은 주둜 λ¬΄μ—‡μΈκ°€μš”?"
]

# 객관식 μ˜΅μ…˜
options = [
    ["κ³„νšλŒ€λ‘œ 움직인닀", "상황에 따라 μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•œλ‹€"],
    ["λ…Όλ¦¬μ μœΌλ‘œ λΆ„μ„ν•œλ‹€", "직관에 μ˜μ‘΄ν•œλ‹€"],
    ["μΉœκ΅¬λ“€κ³Ό μ‹œκ°„μ„ 보낸닀", "혼자만의 μ‹œκ°„μ„ μ„ ν˜Έν•œλ‹€"],
    ["사싀과 데이터", "μ‚¬λžŒλ“€μ˜ 감정과 의견"],
    ["μ² μ €ν•œ κ³„νšμ— λ”°λ₯Έλ‹€", "즉ν₯적으둜 움직인닀"],
    ["문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λΆ„μ„ν•œλ‹€", "감정을 ν‘œν˜„ν•˜κ±°λ‚˜ μƒλ‹΄ν•œλ‹€"],
    ["사ꡐ적이고 ν™œλ™μ ", "μ‘°μš©ν•˜κ³  내성적"],
    ["ν˜ΈκΈ°μ‹¬μ„ κ°€μ§€κ³  νƒκ΅¬ν•œλ‹€", "μ‹€μš©μ μΈ 츑면을 μš°μ„  κ³ λ €ν•œλ‹€"],
    ["κ³„νšμ„ μ„Έμ›Œμ„œ κ²°μ •ν•œλ‹€", "직감적으둜 κ²°μ •ν•œλ‹€"],
    ["리더십을 λ°œνœ˜ν•œλ‹€", "νŒ€μ›μœΌλ‘œμ„œ μ§€μ›ν•œλ‹€"]
]

# MBTI μœ ν˜• 계산 및 정보 λ°˜ν™˜ ν•¨μˆ˜
def calculate_mbti(*answers):
    # MBTI 차원 점수 μ΄ˆκΈ°ν™”
    dimensions = {"E": 0, "I": 0, "S": 0, "N": 0, "T": 0, "F": 0, "J": 0, "P": 0}
    
    # μ‚¬μš©μžμ˜ 선택에 따라 차원 점수 μ—…λ°μ΄νŠΈ
    for answer, (introvert, extrovert) in zip(answers, [(1, 0), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0)]):
        if answer == 0:  # 첫 번째 μ˜΅μ…˜ 선택
            dimensions["E"] += extrovert
            dimensions["I"] += introvert
        else:  # 두 번째 μ˜΅μ…˜ 선택
            dimensions["S"] += extrovert
            dimensions["N"] += introvert
            dimensions["T"] += extrovert
            dimensions["F"] += introvert
            dimensions["J"] += extrovert
            dimensions["P"] += introvert
    
    # MBTI μœ ν˜• κ²°μ •
    mbti_type = ""
    mbti_type += "E" if dimensions["E"] >= dimensions["I"] else "I"
    mbti_type += "S" if dimensions["S"] >= dimensions["N"] else "N"
    mbti_type += "T" if dimensions["T"] >= dimensions["F"] else "F"
    mbti_type += "J" if dimensions["J"] >= dimensions["P"] else "P"
    
    # MBTI μœ ν˜•μ— λ”°λ₯Έ μ„±κ²©μ˜ μž₯단점과 유λͺ…인 λ°˜ν™˜
    mbti_details = mbti_info.get(mbti_type, {"μž₯단점": "정보 μ—†μŒ", "유λͺ…인": "정보 μ—†μŒ"})
    return mbti_type, mbti_details["μž₯단점"], mbti_details["유λͺ…인"]

# Gradio μΈν„°νŽ˜μ΄μŠ€ ꡬ성
iface = gr.Interface(
    fn=calculate_mbti,
    inputs=[gr.Radio(options[i], label=questions[i]) for i in range(10)],
    outputs=[
        gr.Textbox(label="λ‹Ήμ‹ μ˜ MBTI μœ ν˜•"),
        gr.Textbox(label="μœ ν˜•μ˜ μž₯단점"),
        gr.Textbox(label="λŒ€ν‘œμ μΈ 유λͺ…인")
    ],
    title="MBTI 진단 ν…ŒμŠ€νŠΈ",
    description="10개의 μ§ˆλ¬Έμ— λ‹΅ν•˜μ—¬ λ‹Ήμ‹ μ˜ MBTI μœ ν˜•κ³Ό κ·Έ μœ ν˜•μ˜ μž₯단점, λŒ€ν‘œμ μΈ 유λͺ…인을 μ•Œμ•„λ³΄μ„Έμš”."
)

# μΈν„°νŽ˜μ΄μŠ€ μ‹€ν–‰
if __name__ == "__main__":
    iface.launch()