<TIL - 0010> python 개인과제 -2-

개발일지·2023년 3월 27일
0

til

목록 보기
10/43


random으로 print하기

def normal_attack(self, other):
        attack_power = random.randint(
            int(self.power * 0.8), int(self.power * 1.2))
        if random.random() < self.evasion:
            print(evasion_message)
        else:
            ...

일정 확률로 회피하는 기능을 넣었는데
회피에 성공했을때 매번다르게 메시지를 넣고싶었다.

random을 print에도 적용시킬 수 있지 않을까? 라는 생각까지는 도달했는데
어떻게 적용해야할지 몰라서 열심히 구글링한 결과
random.choice라는 방법을 찾아서 적용했다.

def normal_attack(self, other):
        attack_power = random.randint(
            int(self.power * 0.8), int(self.power * 1.2))
        if random.random() < self.evasion:
            print(random.choice(f"{self.name}evasion_message",f"{other.name}evasion_message",...)
        else:
            ...

쓰다보니 직관성이 좀 떨어져서 리스트로 출력하는 방법을 채택

def normal_attack(self, other):
        attack_power = random.randint(
            int(self.power * 0.8), int(self.power * 1.2))
        if random.random() < self.evasion:
        	evasion_message = [f"{self.name}evasion_message",
            				   f"{other.name}evasion_message",
                               ...]
            print(random.choice(evasion_message))
        else:
            ...

추가로 회피할 때마다 출력된 메시지는 제외하고 다른 메시지를 보여주고 싶었는데
어떤 종류의 메시지가 있는지 보여주기 위해서 회피확률을 늘리자니
전투가 길어져서 루즈해지고 그에 따른 출력될 메시지의 양도 많아져서 리스트가 많아지는 악순환..
그래서 적당한 선에서 끝나도록 했다


** random.sample도 있었는데 choice는 랜덤으로 한 요소를 선택한다면
sample은 여러 요소를 랜덤 출력할수있다고한다.

list = [1, 2, 3, 4, 5, ...]
sample = random.sample(list, 2)
#임의로 2개를 골라 출력


profile
아닐지

0개의 댓글