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)
수정한 이유 :