본문 바로가기
728x90

Study (Data Science)/Python44

게임 캐릭터 클래스 만들기 표준 입력으로 게임 캐릭터 능력치(체력, 마나, AP)가 입력됩니다. 다음 소스 코드에서 애니(Annie) 클래스를 작성하여 티버(tibbers) 스킬의 피해량이 출력되게 만드세요. 티버의 피해량은 AP * 0.65 + 400이며 AP(Ability Power, 주문력)는 마법 능력치를 뜻합니다. 예입력 511.68 334.0 298 결과 티버: 피해량 593.7 헷갈렸던 부분들 1. __init__에서 attribute 준 인자들을 다른 function에서 또 줘야하는가. 예를 들어 def tibbers(self) 후, 이 함수에서 사용될 ability_power에 대해 또 self.ability_power=self.ability_power라고 해줘야 하나.. 했는데 결과적으로 안해줘도 된다. 2. 이.. 2022. 11. 30.
막강한 클래스 (Class) Everything in Python is an object, and almost everything has attributes and methods. 파이썬(Python)에서 모든 것은 객체(object)다. 그래서 거의 모두가 속성(attributes) 과 메서드(methods) 를 갖는다. 객체(Object) 안에서, 변수(Variable)를 만들면 속성(Attribute; State)이 되고, mycat = 'kola' 함수(Function)를 만들면 메서드가(Method; Behavior) 된다. def genius(self, speed, lr): , mycat 변수는 단지 이름이다. 단지 = 이라는 연산자를 이용해 값을 할당받은 객체를 불러주는 second name이다. A shallow co.. 2022. 11. 30.
Unit 31. 재귀호출 (recursive call) 재귀호출 함수 나 자신 안에 나를 또 호출하는 방법. 그럼 또 함수가 돌아가고 또 그 함수가 돌아가고 무한 loop. 다행히 파이썬은 1000번까지 반복이 가능해서 멈추기는 하지만, 꼭 빠져나오는 코드를 작성해줘야 함. 언제쓸까? 어떤 연산을 한 그 값으로 또 같은 연산을 해야할 때가 있다. 그 때 사용하면 된다. 어떻게쓸까? 먼저 제일 마지막에 빠져나올때의 조건문부터 작성하고, 그 뒤에 변환식을 넣어주자. n (차수) 의 변화가 어떻게 되는지를 잘 살필 것. def hello(count): if count == 0: # 종료 조건을 만듦. count가 0이면 다시 hello 함수를 호출하지 않고 끝냄 return print('Hello, world!', count) count -= 1 # count를 .. 2022. 11. 29.
Unit 29. 함수의 return 참고 | 매개변수는 없고 반환값만 있는 함수 함수를 만들 때 매개변수는 없지만 값만 반환하는 함수를 만들 수도 있습니다. 다음은 매개변수 없이 1만 반환합니다. >>> def one(): ... return 1 ... >>> x = one() >>> x 1 참고 | return으로 함수 중간에서 빠져나오기 return은 값을 반환하는 기능뿐만 아니라 함수 중간에서 바로 빠져나오는 기능도 있습니다. 다음은 매개변수 a가 10이면 함수를 그냥 빠져나옵니다. >>> def not_ten(a): ... if a == 10: ... return ... print(a, '입니다.', sep='') ... >>> not_ten(5) 5입니다. >>> not_ten(10) >>> not_ten 함수에 5를 넣으면 pr.. 2022. 11. 29.
참고) zip( ) 함수 zip 여러개의 iterable 객체 (like. list, tuple, dic..) 을 객체로 받으면서, 각 객체가 담고 있는 원소를 차례로 접근할 수 있는 능력자 iterator. 원래는 이렇게 for문을 두 리스트에 돌리겠지만, >>> numbers = [1, 2, 3] >>> letters = ["A", "B", "C"] >>> for i in range(3): ... pair = (numbers[i], letters[i]) ... print(pair) ... (1, 'A') (2, 'B') (3, 'C') zip을 사용하면, >>> for i in range(3): ... pair = (numbers[i], letters[i]) 이렇게 두 줄이 >>> for pair in zip(numbers,.. 2022. 11. 29.
Unit30. *args / **kwargs (가변인자; Variadic Parameters) 인자 Argument에는 두 종류가 있다. 그리고 항상 함수를 실행시키는 인자를 줄 때에는, positional은 필수조건이므로 무조건 줘야 하고, 앞에 줘야하고, keyword는 필수가 아니므로 안주면 생략가능하고, positional갯수를 채운 뒤에 줘야한다. Positional arguments : 정해지는 인자 ; first, second Keyword arguments : 키워드로 잡는 인자 ; third, fourth 코드로 보면, def save_ranking(first, second, third=None, fourth=None): .... save_ranking('Alice', 'Bella', 'Mike', fourth = 'Daniel') 이렇게 될 때, Positinal 두개 다 채워서.. 2022. 11. 29.
참고) map + lambda lambda (원래모습 : 바뀐모습) print( (lambda x,y: x + y)(10, 20) ) 인자까지 한꺼번에 줄 수있음 map (def명, 넣을것) 순회가능한 데이터를 저 함수에 넣어 ouput을 도출하겠다. 는 뜻. map(변환 함수, 순회 가능한 데이터) map은 꼭 list로 변환해줘야 값을 볼 수 있음. def list_mul(x): return x * 2 result = list(map(list_mul, [1, 2, 3])) print(result) lambda + map map이 lambda 식 자체를 인수로 가짐. i 를 i*2로 바꿀꺼고 (lambda), [1,2,3]을 i로 돌릴꺼야 (map) result = list(map(lambda i: i * 2 , [1, 2, 3]).. 2022. 11. 29.
참고) iterable, iterator 차이점 iterable : 순환 가능한. 그냥 가능하다는 능력치. 나는 수학을 잘한다. 이런거. iterator : 순환가능자. 그 능력치를 컨트롤하는자. 수학선생님. 선생님은 수학을 당연히 잘한다. iterator는 당연히 iterable 하다. 지도 편달하는 코드가 들어간다. 학생이 수학을 잘해도 지도편달은 어려울 수 있따. iterable하다고 iterator는 아니다. 참고 : https://velog.io/@clueless_coder/%ED%8C%8C%EC%9D%B4%EC%8D%AC-iterable%EA%B3%BC-iterator-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EB%AD%90%EC%98%88%EC%9A%94 [파이썬] iterable과 iterator 의 차이가 .. 2022. 11. 29.
참고) 최댓값, 최솟값 (함수에서 return 잘 활용하는법) list_data = [30, 20, 30, 40] def minmax_function(x_list): # 1번 함수에 최솟값, 최댓값 함수를 품는다. def inner_min_function(x): # 1-1 최솟값 length = len(x) min_result = x[0] for i in range(length): if min_result > x[i]: min_result = x[i] return min_result # "인덱스별" 최솟값 리턴받음. 계속 갱신하게되고 제일 마지막값남음. def inner_max_function(x): # 1-2 최댓값 length = len(x) max_result = x[0] for i in range(length): if max_result < x[i]: max.. 2022. 11. 29.
참고) Enumerate/Yield/Generator/Try/Accept/Multiprocessing Enumerate for문에서 인덱스도 같이 출력할 때. for i, value in enumerate(리스트명) my_list = ['a','b','c','d'] for i, value in enumerate(my_list): print("순번 : ", i, " , 값 : ", value) Generator, yield yield를 쓰면 generator로 연결된다. generator는 lazy iterator. 반복문을 출력할 때에도 주르륵 출력하는 것이 아니라, 하나 출력하고 쉬고, 하나 출력하고 쉬고. 데이터가 많을 때 메모리 사용이 효율적이어서 자주 사용하는 파이썬의 기능. 참고 사이트 : https://www.daleseo.com/python-yield/ 파이썬의 yield 키워드와 제너레이터.. 2022. 11. 29.
728x90