import gradio as gr def mbti_diagnosis(*answers): dimension_scores = {'E': 0, 'I': 0, 'N': 0, 'S': 0, 'T': 0, 'F': 0, 'J': 0, 'P': 0} # 각 문항에 따라 차원 점수를 업데이트 (보정된 로직) for i, answer in enumerate(answers): score = 1 if answer == "예" else 0 if i in [0, 1, 4, 5, 8, 9, 12, 13, 16, 17]: # E, N, T, J 차원에 해당하는 문항 인덱스 if i % 2 == 0: # E, N dimension_scores['E' if i < 8 else 'N'] += score else: # I, S dimension_scores['I' if i < 8 else 'S'] += score else: # T, F, J, P 차원에 해당하는 문항 인덱스 if i % 2 == 0: # T, J dimension_scores['T' if i < 16 else 'J'] += score else: # F, P dimension_scores['F' if i < 16 else 'P'] += score # MBTI 유형 결정 mbti_type = '' mbti_type += 'E' if dimension_scores['E'] > dimension_scores['I'] else 'I' mbti_type += 'N' if dimension_scores['N'] > dimension_scores['S'] else 'S' mbti_type += 'T' if dimension_scores['T'] > dimension_scores['F'] else 'F' mbti_type += 'J' if dimension_scores['J'] > dimension_scores['P'] else 'P' return mbti_type questions = [ "사람들과 어울리는 것을 좋아하나요?", "구체적인 사실보다는 아이디어에 더 관심이 많나요?", "결정을 내릴 때 논리와 이성을 중요시하나요?", "계획을 세우고 그에 따라 행동하는 것을 선호하나요?", "소규모 그룹이나 혼자 있는 시간을 선호하나요?", "현실적인 해결책을 선호하나요?", "감정보다는 사실에 기반하여 의사결정을 하나요?", "융통성 있게 계획을 변경하는 것에 편안함을 느끼나요?", "새로운 사람들을 만나는 것에 흥분하나요?", "상상력을 자주 사용하나요?", "친구나 동료의 감정을 고려하는 편인가요?", "목표를 설정하고 그것을 달성하기 위해 일정을 관리하나요?", "혼자만의 시간을 중요하게 생각하나요?", "세부 사항보다는 전체적인 그림을 보는 것을 선호하나요?", "타인의 입장을 이해하려고 노력하나요?", "갑작스러운 변화를 잘 받아들이나요?", "대화보다는 관찰을 선호하나요?", "실제 경험을 통해 배우는 것을 좋아하나요?", "공정성과 정의를 중요시하나요?", "계획에 따라 일하는 것이 안정감을 줍나요?" ] # Gradio 인터페이스 설정 interface = gr.Interface( fn=mbti_diagnosis, inputs=[gr.Radio(["예", "아니오"], label=question) for question in questions], outputs="text", title="MBTI 유형 진단", description="다음 문항에 대한 답변을 통해 당신의 MBTI 유형을 알아보세요." ) # 인터페이스 실행 interface.launch()