일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Android
- 정처기
- java
- 스터디
- doitandroid
- 안드로이드
- CS
- 알고리즘
- 인프런
- 코테
- 자바
- Til
- 자료구조
- 코틀린
- SQL
- 프로그래머스
- 혼공단
- join
- select
- 오블완
- groupby
- 카카오코테
- MySQL
- 혼공파
- 혼공챌린지
- 안드로이드스튜디오
- 기술면접
- 티스토리챌린지
- Kotlin
- 정보처리기사
- Today
- Total
Welcome! Everything is fine.
[2주차] Python 100 문제풀이 Part.2 - 함수 본문
💡 함수
기본적인 함수 작성법
❔ 파이썬의 기본적인 함수 작성과 호출에 대한 코드를 구현하시오.
# 함수 작성
def a():
print("붕어빵")
def b():
print("개구리빵")
# 함수 호출
a()
b()
❔ 리턴값이 있는 함수를 작성하시오.
리턴값이 있든 없든 함수를 만들 수 있으며, 각 함수의 변수명은 같아도 상관없다.
def a():
result = '붕어빵'
return result
def b():
result = '개구리빵'
return result
변수의 메모리 주소값 출력하기
❔ 변수의 메모리 주소값을 출력하여 다른 함수내 같은 변수의 값들이 어떤 주소를 가지고 있는지 출력하시오.
변수의 메모리 주소 값을 출력할 때는 id( )함수를 이용한다.
def a():
result = '붕어빵'
result_loc = id(result)
return result_loc
def b():
result = '개구리빵'
result_loc = id(result)
return result_loc
print("a()함수 내 result 변수의 메모리 주소 :", a())
print("b()함수 내 result 변수의 메모리 주소 :", b())
max( ) 함수와 min( ) 함수
❔ 최고 점수를 출력하는 함수를 만들어 영어 점수표를 함수로 전달하면 최고 점수가 나오도록 구현해보시오.
max ( ) | 최댓값을 찾아 리턴하는 함수 |
min( ) | 최솟값을 찾아 리턴하는 함수 |
english_score = [35, 55, 87, 98, 48, 88, 77, 65, 91, 79]
# 최고 점수를 출력하는 함수
def max_in_list(lst):
return max(lst)
# 최저 점수를 출력하는 함수
def min_in_list(lst):
return min(lst)
max = max_in_list(english_score)
min = min_in_list(english_score)
print(max, min)
전에 배운 sort( ) 함수로도 구현해볼 수 있다.
def max_in_list(lst):
lst.sort(reverse=True)
list_max = lst[0]
return list_max
def min_in_list(lst):
lst.sort()
list_min = lst[0]
return list_min
❔ 아래의 코드를 수정하여 최고, 최저 점수가 동시에 출력되도록 구현하시오.
def max_min_in_list(lst):
return min(lst)
return max(lst)
english_score = [35, 90, 58, 30, 98, 56, 89, 78, 91, 67]
result = max_min_in_list(english_score)
print(result)
위와 같은 코드를 실행하면 최솟값인 35만 출력된다. 함수내에서 반환되는 리턴 값은 하나여야 하기 때문이다. return 함수가 나오면 함수가 종료된다. 따라서 함수를 각각 만들거나, return을 하나로 만드는 등의 방법을 통하여 수정하여야 한다.
# return을 한 줄에 쓰는 방법
def max_min_in_list(lst):
return max(lst), min(lst)
a, b = max_min_in_list(english_score)
print("최고 점수 : ", a)
print("최저 점수 :", b)
나 역시 return을 하나로 만들기 위해 아래와 같이 따로 변수를 만들어서 그 변수를 출력하였다.
# 하나의 변수에 최댓값, 최솟값을 넣는 방법
english_score = [35, 55, 87, 98, 48, 88, 77, 65, 91, 79]
def max_min_in_list(lst):
min_max = f"최저 점수는 {min(lst)}점이고, 최고 점수는 {max(lst)}점입니다. "
return min_max
result = max_min_in_list(english_score)
print(result)
❔ 아래 코드는 리스트에서 최젓값을 찾아내는 함수를 직접 구현한 것이다. 올바른 출력 결과가 나오도록 빈칸을 채워보시오.
def min_in_list(lst):
ar_num = ______(lst)
first_min_number = ____________
for i in range( ______________ ):
if _________ < first_min_number:
first_min_number = ____________
return first_min_number
lst = [33, 44, 55, 66, 77, 88, 99, 11, 22, 100, 48, 82, 57, 79, 91, 38]
result = min_in_list(lst)
print('[3-1] : 직접 구현한 min() : ', result)
print('[3-2] : 내장 min() : ', min(lst))
len( ) 함수를 이용하여 요소의 개수를 구하고, 요소의 인덱스 값을 구할 수 있도록 빈칸을 채웠다.
def min_in_list(lst):
ar_num = len(lst)
first_min_number = lst[0]
for i in range(len(lst)):
if lst[i] < first_min_number:
first_min_number = lst[i]
return first_min_number
lst = [33, 44, 55, 66, 77, 88, 99, 11, 22, 100, 48, 82, 57, 79, 91, 38]
result = min_in_list(lst)
print('[3-1] : 직접 구현한 min() : ', result)
print('[3-2] : 내장 min() : ', min(lst))
sort( )와 sorted( )의 차이점
sort( ), sorted( ) 함수 둘 다 아무런 옵션 없이 사용하면 디폴트 정렬이 오름차순이다. 그러나 사용 방법과 원본에 대한 결과가 각자 다르다.
1. sort( ) : 원본을 유지하지 않는다.
english_score = [35, 55, 87, 98, 48, 88, 77, 65, 91, 79]
b = english_score.sort()
print(b) # 출력 결과 None
print(english_score) # 출력 결과 [98, 91, 88, 87, 79, 77, 65, 55, 48, 35]
2. sorted( ) : 원본을 유지한다.
english_score = [35, 55, 87, 98, 48, 88, 77, 65, 91, 79]
a = sorted(english_score, reverse=True)
print(a) # 출력 결과 [98, 91, 88, 87, 79, 77, 65, 55, 48, 35]
❔ 오름차순, 내림차순 정렬을 sort(), sorted() 함수로 구현하시오.
lst = [100, 50, 70, 88, 65]
# sort()
lst.sort()
print( '[1] sort() 오름차순 정렬 : ', lst)
lst.sort(reverse=True)
# sorted()
sorted1 = sorted(lst)
sorted2 = sorted(lst, reverse=True)
print( '[1] sort() 내림차순 정렬 : ', lst)
print( '[2] sorted() 함수로 정렬 : ', sorted1, sorted2)
입력 파라미터 값 지정하여 호출하기
❔ 함수 호출시 입력 파라미터 값을 지정하여 함수를 호출하는 예제를 만들어보시오.
def my_func(id_, name_, strength):
return id_, name_, strength
result = my_func('batman', '베트맨', '900')
print(result, type(result)) # type은 튜플로 리턴된다.
하나의 변수 vs 여러개 변수
하나의 변수로 리턴값을 받아서 출력하는 것과 여러개 변수로 리턴값을 받아서 출력하는 것은 그 결과와 타입이 다르게 나타난다.
❔ 아래 코드의 결과를 말해보고 타입은 무엇으로 나오는지 설명해보시오.
def my_func(id_, name_, power):
return id_, name_, power
result = my_func(id_='superman', name_='슈퍼맨', power=3000)
a, b, c = my_func(id_='batman', name_='배트맨', power=4000)
result 라는 하나의 변수로 리턴값을 받아 출력한다면 아래와 같이 출력될 것이다. 여러개를 반환하지 않고 '튜플'이라는 하나의 값을 리턴한다.
('superman', '슈퍼맨', 3000) <class 'tuple'>
반면 a,b, c 라는 여러개의 변수로 리턴값을 받아 출력한다면 아래와 같이 출력될 것이다. 각 변수마다 따로 값이 들어가기 때문이다.
batman 베트맨 4000 <class 'str'> <class 'str'> <class 'int'>
디폴트 파라미터
❔ 디폴트 파라미터란 무엇인지 설명하고 부가세 계산 프로그램을 만들어보시오. 이때 공급가 구하는 부분을 디폴트 프라미터로 받아 구현하시오.
✔ 디폴트 파라미터란 함수를 호출할 때 인자의 값을 설정하지 않아도 기본값이 할당되도록 하는 것이다. 기본값은 함수를 정의할 때 지정한다.
def calc_tax(price, operator=1.1):
supply_value = round(price/operator) # 공급가
vat = price - supply_value # 부가세
return supply_value, vat, price
result = calc_tax(110000)
print(result)
파라미터 갯수를 알 수 없을 때 함수를 만드는 방법
가변길이 입력 파라미터 : 함수에서 입력 파라미터를 받을 때 * 표시를 해줌으로써 가변길이라는 것을 명시적으로 표시한다.
가변길이 입력 파라미터 값을 함수가 받았을 때의 자료형은 튜플이다.
❔ 함수 호출시 파라미터 갯수를 알 수 없는 상황에서는 함수를 어떻게 만들어야하는지 예제로 설명하시오.
def my_func(*params):
n = 0
for i in params:
n += i
return n
a = my_func(1,1,1,1)
print(a)
b = my_func(1,2,3,4,5,6,7,8,9)
print(b)
❔ 가변길이 입력 파라미터 값들을 함수로 넘겨서 해당 파라미터의 갯수와 홀수들의 합을 구하는 코드를 구현하시오.
def my_func(*params):
count = 0
hap = 0
for i in params:
count += 1
if i % 2 != 0:
hap += i
return count, hap
a, b = my_func(1,2,3,4,5,6,7,8,9)
result = my_func(1,2,3,4,5,6,7,8,9,10,11)
print('가변길이 입력 파라미터 갯수와 홀수의 합 :', a, b, type(a), type(b))
print('변수 하나로 리턴되는 값 :',result, type(result)
그러나 더 쉬운 방법은 len( )함수를 사용하는 것이다.
def my_func(*params):
print(len(params))
📌 다음주 계획
- <Python 100 문제풀이 Part.3 - OOP> 강의 듣기
- <Jump To Java> 05장 공부하기 + <이것이 자바다>
- Github 더 공부하기
'자격증 및 기타 활동 > 여름방학 스터디(Python)' 카테고리의 다른 글
[5주차] Python 100 문제풀이 Part.3 - 알고리즘, 문자열 (0) | 2021.08.05 |
---|---|
[4주차] Python 100 문제풀이 Part.3 - 모듈 (0) | 2021.07.29 |
[3주차] Python 100 문제풀이 Part.3 - OOP (0) | 2021.07.22 |
[1주차] Python 100 문제풀이 Part.2 - 배열 (0) | 2021.07.07 |