T.I.L (파이썬 턴제 게임 만들기)

2023. 3. 28. 22:13T.I.L (Today_I_Learned)

문제점

#문제가 발생한 코드
def attack_or_skill(self, other):
        select = random.choice([self.attack(other), self.skill(other)])
        return select​
#의도: random함수 안에 호출된 두개 함수의 결과값을 random함수를 이용해 
       무작위로 한개만 선별하여 변수 select에 담아 select를 활용하려 했습니다.
#문제: 의도와는 다르게 attack_or_skill함수를 사용했을때 select_or_skill함수에 호출된
       두개 함수의 결과가 모두 출력이 되는 상황이 발생했습니다.
       
시도해 본 것

1. print(select)를 사용해 attack_or_skill함수가 반환해야 할 값이 담긴 
   변수 select의 값을 확인해 봤습니다.
2. return을 정의하고 사용하지 않고 있다는 것을 발견하고 삭제해 주었습니다.


해결 방법

1. 1번 시도에서 print(select)의 결과값이 'none'이 출력되었습니다.
   변수 select안에 호출된 두개 함수의 구조를 보니 return값이 존재하지 않아서 
   실행은 되지만 값을 활용할 수가 없었던 것 이었습니다. 
2. 순서를 다시 생각해 보면 두개 함수를 호출할때 인자값을 부여한 이후 random을
   거치는 것이 아닌 random으로 두함수를 선별한 후 인자값을 주어 실행시키면
   되겠다는 결론에 도달했습니다.
   
   
알게된 것

#문제를 해결하고 난 후의 코드
def attack_or_skill(self, other):
        select = random.choice([self.attack, self.skill])
        select(other)
        
이번 문제를 통해 함수라는 것의 특성에 대해 다시 한 번 생각해 보게 되었습니다.
함수는 그저 행동을 할 뿐 값을 가지고 있지 못하기 때문에 발생했다고도 생각을 해 봅니다.
또한 값이 존재하지 않는 함수의 결과값으로 뭔가를 하려고 했다는 것에서 문제가 발생 했을때
문제가 발생한 부분의 값을 출력해 보면서 오류를 해결해 나가는 방법을 배웠습니다.

#문제를 해결하는데 도움을 주신 내배캠 동기분들 정말 감사하고 최곱니다!!!

 

'T.I.L (Today_I_Learned)' 카테고리의 다른 글

T.I.L  (1) 2023.03.30
T.I.L (알고리즘 문제의 문제 - 1)  (0) 2023.03.29
T.I.L (클래스 - 추가 정리)  (1) 2023.03.27
T.I.L (Python -클래스 class)  (0) 2023.03.24
T.I.L (Python if문(조건문))  (0) 2023.03.24