File size: 5,936 Bytes
4429898
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19cd81e
4429898
19cd81e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4429898
dfc484b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4429898
 
 
 
 
 
19cd81e
 
4429898
 
19cd81e
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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["유λͺ…인"]

# MBTI μœ ν˜•μ— λŒ€ν•œ 정보 λ”•μ…”λ„ˆλ¦¬
mbti_info = {
    "ESTJ": {"μž₯단점": "μ‹€μš©μ μ΄κ³  ν˜„μ‹€μ , μ±…μž„κ°μ΄ κ°•ν•˜λ©° 리더십을 잘 λ°œνœ˜ν•œλ‹€.", "유λͺ…인": "μ‘°μ§€ μ›Œμ‹±ν„΄"},
    "ISTJ": {"μž₯단점": "μ‹ μ€‘ν•˜κ³  μ² μ €ν•œ 뢄석λ ₯을 κ°€μ§€λ©° μ•ˆμ •μ μ΄κ³  μ‹ λ’°ν•  λ§Œν•˜λ‹€.", "유λͺ…인": "μ œν”„ 베쑰슀"},
    "ESFJ": {"μž₯단점": "사ꡐ적이고 동정심이 많으며 ν˜‘λ™μ„ μž˜ν•œλ‹€.", "유λͺ…인": "μ˜€ν”„λΌ μœˆν”„λ¦¬"},
    "ISFJ": {"μž₯단점": "μΆ©μ‹€ν•˜κ³  사렀 깊으며 μ‹ μ€‘ν•˜κ³  μ„±μ‹€ν•˜λ‹€.", "유λͺ…인": "λ‘œμ € νŽ˜λ”λŸ¬"},
    "ESTP": {"μž₯단점": "적응λ ₯이 κ°•ν•˜κ³  ν™œλ™μ μ΄λ©° 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λŠ₯λ ₯이 λ›°μ–΄λ‚˜λ‹€.", "유λͺ…인": "λ§ˆλˆλ‚˜"},
    "ISTP": {"μž₯단점": "뢄석λ ₯이 λ›°μ–΄λ‚˜λ©° 상황을 잘 νŒŒμ•…ν•˜μ—¬ 즉ν₯적으둜 λŒ€μ²˜ν•  수 μžˆλ‹€.", "유λͺ…인": "클린트 μ΄μŠ€νŠΈμš°λ“œ"},
    "ESFP": {"μž₯단점": "λ‚™μ²œμ μ΄κ³  μΉœμ ˆν•˜λ©° 즐거움을 μ£Όλ³€ μ‚¬λžŒλ“€κ³Ό λ‚˜λˆˆλ‹€.", "유λͺ…인": "마릴린 먼둜"},
    "ISFP": {"μž₯단점": "상λƒ₯ν•˜κ³  μ˜¨ν™”ν•˜λ©° 예술적인 λ©΄λͺ¨λ₯Ό κ°€μ§€κ³  μžˆλ‹€.", "유λͺ…인": "ν”„λ¦°μŠ€"},
    "ENTJ": {"μž₯단점": "λͺ©ν‘œμ§€ν–₯적이고 결단λ ₯이 있으며 리더십을 νƒμ›”ν•˜κ²Œ λ°œνœ˜ν•œλ‹€.", "유λͺ…인": "쀄리아 λ‘œλ²„μΈ "},
    "INTJ": {"μž₯단점": "μ „λž΅μ μ΄κ³  λ›°μ–΄λ‚œ 뢄석λ ₯을 κ°€μ§€λ©° λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•œλ‹€.", "유λͺ…인": "일둠 머슀크"},
    "ENTP": {"μž₯단점": "창의적이고 독창적이며 λ…Όλ¦¬μ μœΌλ‘œ μ‚¬κ³ ν•œλ‹€.", "유λͺ…인": "λ³Όν…Œλ₯΄"},
    "INTP": {"μž₯단점": "논리적이고 뢄석적이며 독창적인 아이디어λ₯Ό λ‚΄λ†“λŠ”λ‹€.", "유λͺ…인": "μ•Œλ²„νŠΈ μ•„μΈμŠˆνƒ€μΈ"},
    "ENFJ": {"μž₯단점": "열정적이고 동정심이 많으며 λ‹€λ₯Έ μ‚¬λžŒλ“€μ„ 잘 μ΄λˆλ‹€.", "유λͺ…인": "λ§ˆλ” ν…Œλ ˆμ‚¬"},
    "INFJ": {"μž₯단점": "이해심이 깊고 톡찰λ ₯이 λ›°μ–΄λ‚˜λ©° λ‹€λ₯Έ μ‚¬λžŒλ“€μ„ μ΄λŒμ–΄ 갈 수 μžˆλ‹€.", "유λͺ…인": "λ‹ˆμ½œλΌ ν…ŒμŠ¬λΌ"},
    "ENFP": {"μž₯단점": "열정적이고 상상λ ₯이 ν’λΆ€ν•˜λ©° μƒˆλ‘œμš΄ 아이디어λ₯Ό μ œμ‹œν•œλ‹€.", "유λͺ…인": "μ›”νŠΈ λ””μ¦ˆλ‹ˆ"},
    "INFP": {"μž₯단점": "μ΄μƒμ£Όμ˜μžλ‘œμ„œ 창의λ ₯이 ν’λΆ€ν•˜κ³  독창적이닀.", "유λͺ…인": "μœŒλ¦¬μ—„ μ…°μ΅μŠ€ν”Όμ–΄"}
}

# 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()