코딩한걸음
728x90
반응형

Today I Learned


어떤 문제가 있었는지

이번 팀 과제를 하면서 몇가지 아쉬운 코드들이 있었다

확실히 저번 개인 과제를 할 때 보다는 코드정리에 더 신경을 많이 썼지만

이번에 튜터님의 강의를 들어보니 더 개선할 부분들이 많았다


내가 시도해 본 것들

    def job_select(self):
        while True:
            print('1 : 전사, 2 : 마법사, 3 : 궁수, 4 : 도적')
            self.job = input('직업을 선택해주세요 : ')
            if self.job in self.job_dict.keys():
                user = User(
                    self.name,
                    1,
                    self.job_dict[self.job]['hp'],
                    self.job_dict[self.job]['mp'],
                    self.job_dict[self.job]['power'],
                    self.job_dict[self.job]['magic_power'],
                    self.job_dict[self.job]['avoid'],
                    self.job_dict[self.job]['job'],
                )
                break
            else:
                print('올바른 값을 입력해주세요')
                continue
        print(f'당신의 직업은 {self.job_dict[self.job]["job"]} 입니다')
        return user

user를 정의 할 때 이렇게 반복되는 부분을 변경


어떻게 해결 했는지

    def job_select(self):
        while True:
            print('1 : 전사, 2 : 마법사, 3 : 궁수, 4 : 도적')
            self.job = input('직업을 선택해주세요 : ')
            if self.job in self.job_dict.keys():
                user = User(
                    self.name,
                    1,
                    self.job_dict.values()
                )
                break
            else:
                print('올바른 값을 입력해주세요')
                continue
        print(f'당신의 직업은 {self.job_dict[self.job]["job"]} 입니다')
        return user

self.job_dict.values()로 깔끔하게 정의 할 수 있었다.

다만 주의할 점은 User에 파라메터들이 job_dict.values와 순서가 맞아야한다.


무엇을 새롭게 배웠는지

딕셔너리의 keys와 values, items함수의 사용법을 배웠다.

그동안은 별 생각 없었는데 python의 dictionary는 활용법이 무궁무진하다

특히 복잡한 if문을 줄이는데 도움이 많이되니 사용법을 최대한 익혀야겠다

 

추가로 getattr, setattr을 사용한 조들도 보였는데 한번 제대로 알아보고 포스팅 해야겠다.

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!