import gradio as gr # 질문 리스트 questions = [ "질문 1: 새로운 환경에서 당신은 어떻게 행동하나요?", "질문 2: 문제를 해결할 때 당신의 접근 방식은 무엇인가요?", "질문 3: 여가 시간을 보낼 때 당신의 선호는 무엇인가요?", "질문 4: 결정을 내릴 때 중요하게 생각하는 것은 무엇인가요?", "질문 5: 프로젝트를 수행할 때 당신의 스타일은 어떤가요?", "질문 6: 스트레스를 받을 때 당신의 대처 방식은?", "질문 7: 다른 사람과의 관계에서 당신은 어떤 타입인가요?", "질문 8: 새로운 아이디어나 이론을 접할 때 당신의 반응은?", "질문 9: 일상적인 결정을 내릴 때 당신은 어떻게 하나요?", "질문 10: 팀 프로젝트에서 당신의 역할은 주로 무엇인가요?" ] # 객관식 옵션 options = [ ["계획대로 움직인다", "상황에 따라 유연하게 대응한다"], ["논리적으로 분석한다", "직관에 의존한다"], ["친구들과 시간을 보낸다", "혼자만의 시간을 선호한다"], ["사실과 데이터", "사람들의 감정과 의견"], ["철저한 계획에 따른다", "즉흥적으로 움직인다"], ["문제를 해결하기 위해 분석한다", "감정을 표현하거나 상담한다"], ["사교적이고 활동적", "조용하고 내성적"], ["호기심을 가지고 탐구한다", "실용적인 측면을 우선 고려한다"], ["계획을 세워서 결정한다", "직감적으로 결정한다"], ["리더십을 발휘한다", "팀원으로서 지원한다"] ] # MBTI 유형 계산 및 정보 반환 함수 def calculate_mbti(*answers): # MBTI 차원 점수 초기화 dimensions = {"E": 0, "I": 0, "S": 0, "N": 0, "T": 0, "F": 0, "J": 0, "P": 0} # 사용자의 선택에 따라 차원 점수 업데이트 for answer, (introvert, extrovert) in zip(answers, [(1, 0), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0)]): if answer == 0: # 첫 번째 옵션 선택 dimensions["E"] += extrovert dimensions["I"] += introvert else: # 두 번째 옵션 선택 dimensions["S"] += extrovert dimensions["N"] += introvert dimensions["T"] += extrovert dimensions["F"] += introvert dimensions["J"] += extrovert dimensions["P"] += introvert # MBTI 유형 결정 mbti_type = "" mbti_type += "E" if dimensions["E"] >= dimensions["I"] else "I" mbti_type += "S" if dimensions["S"] >= dimensions["N"] else "N" mbti_type += "T" if dimensions["T"] >= dimensions["F"] else "F" mbti_type += "J" if dimensions["J"] >= dimensions["P"] else "P" # MBTI 유형에 따른 성격의 장단점과 유명인 반환 mbti_details = mbti_info.get(mbti_type, {"장단점": "정보 없음", "유명인": "정보 없음"}) return mbti_type, mbti_details["장단점"], mbti_details["유명인"] # Gradio 인터페이스 구성 iface = gr.Interface( fn=calculate_mbti, inputs=[gr.Radio(options[i], label=questions[i]) for i in range(10)], outputs=[ gr.Textbox(label="당신의 MBTI 유형"), gr.Textbox(label="유형의 장단점"), gr.Textbox(label="대표적인 유명인") ], title="MBTI 진단 테스트", description="10개의 질문에 답하여 당신의 MBTI 유형과 그 유형의 장단점, 대표적인 유명인을 알아보세요." ) # 인터페이스 실행 if __name__ == "__main__": iface.launch()