mbti_test1 / app.py
springwater's picture
Update app.py
eb0dc0c verified
raw
history blame
3.63 kB
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()