메뉴 건너뛰기

코드#1

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)

수정한 이유 :

위로