메뉴 건너뛰기

매원고 공동교육과정 두 번째 자료 관리자작성

2026.03.23 17:28:55

import gradio as gr

def mbti_test(*args):
    # 1. 지표별 점수 초기화
    e_score, n_score, f_score, p_score = 0, 0, 0, 0

    # 2. 반복문을 이용한 점수 계산
    # args[0]부터 args[49]까지 들어있으므로 인덱스(i)를 이용합니다.
    for i in range(50):
        if args[i] == "예":
            if i < 12:          # 0~11번 질문 (E)
                e_score += 1
            elif i < 25:        # 12~24번 질문 (N)
                n_score += 1
            elif i < 38:        # 25~37번 질문 (F)
                f_score += 1
            else:               # 38~49번 질문 (P)
                p_score += 1

    # 3. 결과 판정 로직 (이 부분은 동일)
    mbti = ""
    mbti += "E" if e_score >= 6 else "I"
    mbti += "N" if n_score >= 7 else "S"
    mbti += "F" if f_score >= 7 else "T"
    mbti += "P" if p_score >= 6 else "J"

    return f"✨ 당신의 분석 결과는 [{mbti}] 입니다! (E:{e_score}, N:{n_score}, F:{f_score}, P:{p_score})"

# 질문 리스트 생성 (50개)
questions = [
    "처음 본 사람에게 먼저 말을 거나요?", "주말에 집에만 있으면 답답한가요?", "자기 주장이 강한 편인가요?",
    "파티나 모임에서 중심에 서는 걸 즐기나요?", "생각보다 행동이 먼저 나가나요?", "전화보다는 대면 대화가 편한가요?",
    "새로운 친구를 사귀는 게 쉬운가요?", "말하면서 생각을 정리하는 편인가요?", "주변 사람들에게 활발하다는 소리를 듣나요?",
    "혼자보다는 여럿이서 작업할 때 능률이 오르나요?", "모르는 사람과 엘리베이터에서 인사할 수 있나요?", "외부 활동이 많은 편인가요?",
    "먼 미래에 대한 상상을 자주 하나요?", "창의적이라는 말을 자주 듣나요?", "비유나 상징적인 표현을 좋아하나요?",
    "구체적인 사실보다는 가능성이 중요한가요?", "전통적인 방식보다는 새로운 방식을 시도하나요?", "멍하게 생각에 잠길 때가 많나요?",
    "영화나 책을 볼 때 결말 이후를 상상하나요?", "일의 세부사항보다는 전체적인 흐름이 중요한가요?", "반복되는 일상보다는 변화를 원하나요?",
    "현실보다는 이상을 꿈꾸나요?", "복잡한 문제를 직관적으로 이해할 때가 있나요?", "아이디어가 끊임없이 떠오르나요?",
    "사물의 이면에 숨겨진 의미를 찾나요?", "감성적인 영화를 보면 눈물이 나나요?", "논리보다는 감정이 앞설 때가 많나요?",
    "타인의 기분을 잘 파악하나요?", "비판보다는 칭찬이 더 효과적이라고 믿나요?", "결정할 때 주변 사람들의 영향을 많이 받나요?",
    "싸움을 싫어해서 손해 보더라도 참는 편인가요?", "공감 능력이 좋다는 소리를 듣나요?", "냉정한 진실보다 따뜻한 위로가 중요한가요?",
    "감사 표현을 자주 하는 편인가요?", "친구가 슬퍼하면 나도 슬픈가요?", "이성적인 판단보다는 마음이 가는 대로 하나요?",
    "상처를 쉽게 받는 편인가요?", "분위기를 화목하게 만드는 게 중요한가요?", "계획 없이 떠나는 여행을 좋아하나요?",
    "물건을 사용한 뒤 제자리에 두지 않을 때가 많나요?", "마감 기한이 닥쳐야 집중력이 폭발하나요?", "정리정돈에 큰 관심이 없나요?",
    "그때그때 기분에 따라 일정을 바꾸나요?", "융통성 있게 대처하는 게 편한가요?", "계획표를 짜는 것 자체가 스트레스인가요?",
    "책상이 다소 어질러져 있는 편인가요?", "규칙이나 정해진 절차를 따분해 하나요?", "번뜩이는 순발력으로 문제를 해결하나요?",
    "과제나 업무를 미루는 경향이 있나요?", "선택지를 항상 열어두는 것을 선호하나요?"
]

# 화면 구성
with gr.Blocks() as demo:
    gr.Markdown("# 🏆 50문항 정밀 MBTI 검사")
    gr.Markdown("모든 문항에 답변한 후 가장 아래의 '결과 보기'를 클릭하세요.")

    inputs = []
    for i, q in enumerate(questions):
        radio = gr.Radio(["예", "아니오"], label=f"{i+1}. {q}")
        inputs.append(radio)

    btn = gr.Button("내 성격 유형 확인하기", variant="primary")
    output = gr.Textbox(label="분석 결과")

    btn.click(fn=mbti_test, inputs=inputs, outputs=output)

demo.launch(share=True)

수정한 이유 :

위로