메뉴 건너뛰기

import gradio as gr



def mbti_test(q1, q2, q3, q4, q5, q6, q7, q8, q9, q10):

    # 각 지표별 점수 초기화 (0점부터 시작)

    e_score = 0

    n_score = 0

    f_score = 0

    p_score = 0



    # [질문 1~10] 선택지에 따른 점수 합산 (단순 if문 구조)

    # E(외향) vs I(내향)

    if q1 == "사람들과 함께 있을 때 에너지가 생긴다": e_score = e_score + 1

    if q2 == "먼저 말을 거는 편이다": e_score = e_score + 1

    if q3 == "주말에는 밖으로 나가는 게 좋다": e_score = e_score + 1



    # S(감각) vs N(직관)

    if q4 == "상상을 자주 하는 편이다": n_score = n_score + 1

    if q5 == "영화 볼 때 숨겨진 의미를 찾으려 한다": n_score = n_score + 1



    # T(사고) vs F(감정)

    if q6 == "고민 상담을 들으면 해결책부터 생각난다": f_score = f_score - 1 # T면 점수 깎기

    else: f_score = f_score + 1 # F면 점수 더하기

    

    if q7 == "리액션보다는 내용이 중요하다": f_score = f_score - 1

    else: f_score = f_score + 1



    if q8 == "친구가 우울해서 화분 샀다고 하면 '왜 우울해?'라고 묻는다": f_score = f_score + 1



    # J(판단) vs P(계획)

    if q9 == "여행 갈 때 시간 단위로 계획을 짠다": p_score = p_score - 1

    else: p_score = p_score + 1



    if q10 == "벼락치기보다는 미리미리 하는 편이다": p_score = p_score - 1

    else: p_score = p_score + 1



    # 최종 MBTI 글자 조합 (if문을 이용한 판정)

    result = ""



    # E/I 판정

    if e_score >= 2: result = result + "E"

    else: result = result + "I"



    # S/N 판정

    if n_score >= 1: result = result + "N"

    else: result = result + "S"



    # T/F 판정

    if f_score >= 2: result = result + "F"

    else: result = result + "T"



    # J/P 판정

    if p_score >= 1: result = result + "P"

    else: result = result + "J"



    return f"당신의 MBTI 결과는 [{result}] 입니다!"



# --- 웹 화면 구성 (학생들이 수정하기 쉬운 부분) ---

with gr.Blocks() as demo:

    gr.Markdown("# 🔍 초간단 10문항 MBTI 테스트")

    gr.Markdown("질문에 답하고 아래의 '결과 보기' 버튼을 눌러주세요.")



    # 질문지 구성 (Radio 버튼 사용)

    q1 = gr.Radio(["사람들과 함께 있을 때 에너지가 생긴다", "혼자 있을 때 에너지가 충전된다"], label="1. 당신은 에너지를 어디서 얻나요?")

    q2 = gr.Radio(["먼저 말을 거는 편이다", "상대방이 말을 걸 때까지 기다린다"], label="2. 처음 본 사람에게?")

    q3 = gr.Radio(["주말에는 밖으로 나가는 게 좋다", "집에서 쉬는 게 제일 좋다"], label="3. 쉬는 날에는?")

    q4 = gr.Radio(["현실적인 사실이 중요하다", "상상을 자주 하는 편이다"], label="4. 당신의 생각 스타일은?")

    q5 = gr.Radio(["보이는 그대로 믿는다", "영화 볼 때 숨겨진 의미를 찾으려 한다"], label="5. 사물을 볼 때?")

    q6 = gr.Radio(["해결책 제시", "공감과 위로"], label="6. 친구가 힘들다고 할 때 당신은?")

    q7 = gr.Radio(["리액션보다는 내용이 중요하다", "내용보다는 말투와 반응이 중요하다"], label="7. 대화할 때 더 중요한 것은?")

    q8 = gr.Radio(["'무슨 화분 샀어?' (T)", "'왜 우울해?' (F)"], label="8. 친구가 우울해서 화분 샀다고 하면?")

    q9 = gr.Radio(["시간 단위로 계획을 짠다", "발길 닿는 대로 움직인다"], label="9. 여행 갈 때 스타일은?")

    q10 = gr.Radio(["미리미리 과제를 한다", "마지막에 몰아서 벼락치기를 한다"], label="10. 할 일이 생겼을 때?")



    btn = gr.Button("결과 확인하기", variant="primary")

    output = gr.Textbox(label="테스트 결과")



    # 버튼 클릭 시 함수 호출

    btn.click(

        fn=mbti_test, 

        inputs=[q1, q2, q3, q4, q5, q6, q7, q8, q9, q10], 

        outputs=output

    )



# share=True로 설정하면 외부 링크(gradio.live)가 생성됩니다.

demo.launch(share=True)

수정한 이유 :

위로