질문 두개짜리 심리테스트 하면 포켓몬 스타팅을 정해주는 코딩을 만들어보고 싶었다.
객관식 답 이외에 입력하면 오답처리 하고 뒤로 돌려보내는 기능도 넣고싶다.
만들고 싶은건 바로 만들어보기로 했다.
Q1 = int(input("당신은 피크닉을 간다면 어디가 좋습니까 ? \n 1)숲 2)해변 3)화산 :"))
#오답처리
if Q1 > 3:
print("1, 2, 3 중에 입력해 주세요.")
Q1 = int(input("당신은 피크닉을 간다면 어디가 좋습니까 ? \n 1)숲 2)해변 3)화산 :"))
elif Q1 < 4:
Q2 = int(input("당신은 과거와 미래 중 어느쪽이 중요하다고 생각합니까 ? \n 1)과거 2)미래 :"))
if Q2 > 2:
print("1, 2 중에 입력해 주세요.")
Q2 = int(input("당신은 과거와 미래 중 어느쪽이 중요하다고 생각합니까 ? \n 1)과거 2)미래 :"))
elif Q2 < 3:
print('''지금부터 당신의 파트너 포켓몬을 정해드리겠습니다!''')
#풀
if Q1 == 1 and Q2 == 1:
print('''당신에겐 풀타입 포켓몬이 어울리겠군요. \n그런 당신의 포켓몬은'이상해씨'입니다!''')
elif Q1 == 1 and Q2 == 2:
print('''당신에겐 풀타입 포켓몬이 어울리겠군요. \n그런 당신의 포켓몬은'치코리타'입니다!''')
#물
elif Q1 == 2 and Q2 == 1:
print('''당신에겐 물타입 포켓몬이 어울리겠군요. \n그런 당신의 포켓몬은'꼬북이'입니다!''')
elif Q1 == 2 and Q2 == 2:
print('''당신에겐 물타입 포켓몬이 어울리겠군요. \n그런 당신의 포켓몬은'리아코'입니다!''')
#불
elif Q1 == 3 and Q2 == 1:
print('''당신에겐 불타입 포켓몬이 어울리겠군요. \n그런 당신의 포켓몬은'파이리'입니다!''')
elif Q1 == 3 and Q2 == 2:
print('''당신에겐 불타입 포켓몬이 어울리겠군요. \n그런 당신의 포켓몬은'브케인'입니다!''')
그런데 이렇게 if로만 코딩하고 나니까 각 경우의수 마다 겹치는 정보가 많아서 비효율적이어 보인다.
코딩 공부 시작한지 3일차라 아는 함수가 별로 없어서 어쩔수 없이 모든 경우의 수를 써서 만든 것이다.
그래서 이걸 어떻게 하면 더 깔끔하고 가볍고 효율적이게 줄일수 있을까 고민하다가
파이썬 6개월 해봤다는 학생분께 도움을 받아 힌트를 얻었다.
얻은 힌트를 바탕으로 다시 제작해보기로 한다.
보기에 없는 숫자를 고르면 처음 질문으로 루프한다.
https://responding.tistory.com/47
'Python' 카테고리의 다른 글
연속형 데이터 연습 (0) | 2023.01.16 |
---|---|
반복문 연습 (0) | 2023.01.16 |
string, 내장함수, random 명령어 연습 (1) | 2023.01.13 |
변수 문제 풀이 (0) | 2023.01.12 |
연산자 (0) | 2023.01.12 |