메뉴 건너뛰기

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)
번호 제목 아이디 날짜 조회 수
66 이 게시판은 주로 문항에 대한 질문이나 의견을 제시하는데 활용하시기 바랍니다. jeongjongkwang 2025.08.10 267
65 [0] 문제를 해결한 소스코드는 올리지 말기 바랍니다. admin 2025.08.10 305
64 [9] 자꾸 틀릴 경우에 보세요. admin 2025.08.10 354
63 [89] C언어 기초 100제 #89, #90번 문제 도와주세요. [2] dbwls020306 2025.08.16 324
62 [90] 89관련 질문 옮김 [1] admin 2025.08.16 282
61 [3339] 예제 수정 요청 [1] gs23078 2025.08.18 260
60 [117] 테스트케이스가 잘못된 것 같습니다. [1] gs24032 2025.08.20 274
59 [1385] 뱀 놀이 예제 수정 요청 [1] file gs24006 2025.08.21 275
58 [3098] [3099] [3100] 수 나열하기 1,2,3 [1] gs25076 2025.08.22 269
57 [3107] 테스트 케이스 수정을 요청드립니다. [1] gs25036 2025.08.22 238
56 python 기초 100제에 대한 전체적인 수정입니다. [1] gs25076 2025.08.23 361
55 [1665] [1666] 문제 지문 수정 요청 [1] gs23078 2025.09.06 260
54 [4253] [4254] [4255] [4256] 정보과학세미나 에디토리얼 file gs23031 2025.09.11 256
53 23076유주한 문제 만들기 문제&풀이 정보세미나 에디토리얼 file gs23076 2025.09.11 217
52 Zobrist 문제 파일 file gs23003 2025.09.12 214
51 [693] 문제에서 전반적으로 수정할 사항이 많습니다. [1] gs25001 2025.09.20 219
50 대회 2_2 테스트케이스 문의 file gs25049 2025.09.21 148
49 [4257] [4258] [4259] [4260] 정보과학세미나 에디토리얼 file gs23061 2025.09.22 146
48 [4262] [4263] [4264] 정보과학세미나 에디토리얼 file gs23106 2025.09.24 165
47 [2657] secret mhlee92 2025.09.25 2
위로