함수(**딕셔너리)
'키워드': 값
형식으로 인수를 저장하고, 앞에 **를 붙여서 함수에 넣어준다. 이때 딕셔너리의 키워드(키)는 반드시 문자열 형태여야 한다.def details (name, age, address): print('이름: ', name) print('나이: ', age) print('주소: ', address) //위와 같이 함수를 만들어주고 // x = {'name': 'haiin', 'age': 18, 'address': 'Seoul'} details(**x) details(**{'name': 'haiin', 'age': 18, 'address': 'Seoul'}) // //x라는 변수에 딕셔너리를 대입하여 함수를 부르는 방식(딕셔너리 언패킹), 딕셔너리 그대로 넣어 함수를 부르는 방식 모두 같은 아래 값을 반환. // //이름: haiin //나이: 18 //주소: Seoul
키워드 인수
를 사용하는 가변 인수 함수
는 매개변수 앞에 **를 붙여서 만든다.def 함수이름(**매개변수): 코드
def details (**kwargs): for kw, arg in kwargs.items() : print(kw, ': ', arg, sep='') print(kwargs) //위와 같이 함수를 만들때 키워드 인수를 사용 // details(name = 'haiin', age = 18, address = 'Seoul') // //함수를 부를때 키워드와 값을 넣어 실행하면 아래와 같이 차례대로 반환됨 // //name: haiin //age: 18 //address: Seoul //{'name': 'haiin', 'age': 18, 'address': 'Seoul'} // //아래와 같이 딕셔너리 언패킹으로 넣어도 반환됨 //x = {'name': 'haiin'} //details(**x) //name: haiin
4가지 과목의 점수를 임의로 받고 그 중에 가장 높은 점수와 낮은 점수, 평균점수를 구하는 함수. 위치인수, 리스트언패킹, 키워드인수, 딕셔너리언패킹을 사용
korean, english, mathematics, science = map(int, input().split())
//4가지 점수 받음
//
def get_min_max_score(*args) :
min_score = min(args)
max_score = max(args)
return min_score, max_score
//
//위치인수, 리스트언패킹으로 값을 받고 min(), max() 함수 사용
//
def get_average(**kwargs) :
average_score = sum(kwargs.values()) / len(kwargs)
return average_score
//
//키워드인수, 딕셔너리언패킹으로 값을 받고 sum()함수로 키워드인수들의 값들만 받아 합을 구함
//
min_score, max_score = get_min_max_score(korean, english, mathematics, science)
average_score = get_average(korean=korean, english=english, mathematics=mathematics, science=science)
//
print('낮은 점수: {0:.2f}, 높은 점수: {1:.2f}, 평균 점수: {2:.2f}'.format(min_score, max_score, average_score))
//
//75 95 85 99 입력했을 경우 아래와 같이 반환됨
//
//낮은 점수: 75.00, 높은 점수: 99.00, 평균 점수: 88.50
def recursive (): print('superstar') recursive() #위와 같이 함수를 만들어주면 계속해서 superstar을 프린트하다 1000번이 되면 RecursionError 가 뜬다. // // def recursive(n): if n == 0: # 종료 조건, n이 0이면 다시 recursive 함수를 호출하지 않고 끝냄 return print('superstar', n) n -= 1 # n를 1 감소시킨 뒤 recursive(n) # 다시 recursive에 넣음 // recursive(5) # recursive 함수 호출
회문
또는 팰린드롬
은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열 등이다. -위키백과-def is_palindrome(word): if len(word) < 2 : #문자열이나 숫자열이 1개이면 회문 return True if word[0] != word[-1] : #첫문자와 마지막문자가 같지 않은지 확인 return False return is_palindrome(word[1:-1]) #같으면 재귀호출하기위해 다시 열을 정리해줌 // // //print(is_palindrome('hello')) #False //print(is_palindrome('level')) #True
피보나치
는 수학에서, 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다.-위키백과-#n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21... #피보나치 수 #아래와 같이 앞의 두수를 더한 값이 다음항의 수가 된다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946...
def fib(n) : if n <= 1 : # 종료 조건을 설정해주고 return n else : return fib(n-1) + fib(n-2) // n = int(input()) print(fib(n)) // #n 에 6 대입 할 경우: #n 이 1 보다 크기 때문에 else로 가서 fib(5) + fib(4) #여기서 fib(5)는 위와 같은 과정으로 fib(4) + fib(3) 을 호출 #위와 같이 계속 호출하다가 f(1) 이나 f(0)을 호출하면 리턴되므로 덧셈시작 #결국 다 더하면 숫자 8 반환.