import streamlit as st # MBTI 질문과 선택지 설정 questions = [ ("당신은 새로운 사람들을 만나는 것을 좋아하나요?", ("예", "아니오")), ("구체적인 사실을 선호하나요, 아니면 가능성에 대해 생각하는 것을 선호하나요?", ("구체적인 사실", "가능성")), ("결정을 내릴 때 논리와 이성을 더 중시하나요, 아니면 개인의 감정과 가치를 더 중시하나요?", ("논리와 이성", "개인의 감정과 가치")), ("계획을 세우는 것을 선호하나요, 아니면 유연하게 대처하는 것을 선호하나요?", ("계획 세우기", "유연하게 대처하기")), ("활동적인 휴가를 선호하나요, 아니면 조용한 휴가를 선호하나요?", ("활동적인 휴가", "조용한 휴가")), ("사실을 바탕으로 이야기하는 것을 선호하나요, 아니면 상상력을 바탕으로 이야기하는 것을 선호하나요?", ("사실 바탕", "상상력 바탕")), ("공정함이 더 중요하나요, 아니면 친절함이 더 중요하나요?", ("공정함", "친절함")), ("일을 끝내는 것이 더 만족스럽나요, 아니면 일을 시작하는 것이 더 만족스럽나요?", ("일 끝내기", "일 시작하기")), ("전통적인 방법을 선호하나요, 아니면 새로운 방법을 시도하는 것을 선호하나요?", ("전통적인 방법", "새로운 방법")), ("계획에 따라 행동하는 것을 좋아하나요, 아니면 spontaneity를 선호하나요?", ("계획에 따라", "spontaneity")), ] # MBTI 차원별 점수 계산을 위한 초기화 scores = {"E": 0, "I": 0, "S": 0, "N": 0, "T": 0, "F": 0, "J": 0, "P": 0} # 질문과 선택지를 출력하고 사용자의 응답을 기록 for i, (question, options) in enumerate(questions, start=1): answer = st.radio(question, options, key=f"question_{i}") if answer: # 사용자의 선택에 따라 점수 업데이트 (이 부분은 예시로 간단하게 구현되어 있습니다) if i % 4 == 1: scores["E" if answer == options[0] else "I"] += 1 elif i % 4 == 2: scores["S" if answer == options[0] else "N"] += 1 elif i % 4 == 3: scores["T" if answer == options[0] else "F"] += 1 elif i % 4 == 0: scores["J" if answer == options[0] else "P"] += 1 if st.button("결과 보기"): # MBTI 유형 결정 mbti_type = "".join([max(pair, key=lambda x: scores[x]) for pair in [("E", "I"), ("S", "N"), ("T", "F"), ("J", "P")]]) st.write(f"당신의 MBTI 유형은 {mbti_type}입니다.")