mbti_test1 / app.py
springwater's picture
Update app.py
dfc484b verified
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()