함수
'''
함수(Funtion)
1.함수는 반복적으로 사용되는 코드 블록에 이름을 붙여놓은 형태이다.
2.함수를 한번 정의해두면 지정해둔 함수 이름을 통해 언제든 해당 코드 블록을 재사용할 수 있다.
3.함수를 정의할 때는 def라는 키워드를 사용한다.
4.정의해둔 함수를 사용하는 것을 호출(call)이라고 부른다.
5.파이썬에서는 함수를 호출하려면 반드시 호출문 위에 함수가 먼저 정의되어 있어야한다.
'''
# 함수의 정의
def calc_sum(x):
sum =0
for n in range(1, x+1):
sum += n
return sum
# 함수의 호출
print("-" * 40)
print('1~5까지의 합계 : ', calc_sum(5)) # 1~5까지의 합계 : 15
print("1~10까지의 합계 : ", calc_sum(10)) # 1~10까지의 합계 : 55
print("-" * 40)
result = calc_sum(5)
print(result)
#---------내장함수 len를 직접 함수로 짜서 만들어보자 -------------
print("-" * 40)
def length(x):
count = 0
for n in x :
count += 1
return count
print("-" * 40)
li = [1, 2, 3, 4, 5]
print(len(li)) # 5
print(length(li)) # 5
s = "hello python"
print(len(s)) # 12
print(length(s)) # 12
인수(arguments)
'''
인수 (arguments)
-인수는 함수를 호출할 때 함수 실행에 필요한 값들을 전달하는 매개체이며,
그렇기 때문에 매개 변수(parameter)라고도 부른다.
-함수 호출부에서 어떤 인수값을 전달하느냐에 따라 함수의 실행 결과가 달라진다.
-인수의 개수는 제한이 없어 많은 값을 함수에 전달할 수도 있고, 하나도 전달하지 않을수도 있다.
-함수를 정의할때 지정한 인수의 수만큼 호출할 때도 동일한 수의 인수값을 전달해야한다.
-인수의 이름을 지어줄 때는 사용하는 사람도 인수 이름만 보고 무슨 값을 전달해야 할지 의미를 알기 쉽게 지정해야한다.
'''
def get_item(a, b):
w = "%s 무기를 획득했다." % a
ar = "%s 방어구를 획득했습니다." % b
detail = w +"\n" + ar
return detail
print(get_item('창', '방패'))
#창 무기를 획득했다.
#방패 방어구를 획득했습니다.
#인수를 전달받지 않는 함수 예
def calc_sum10():
sum = 0
for n in range(1, 11):
sum += n
return sum
print(calc_sum10()) #55
# 계속~게시판에 30개씩 가져오고 싶을때 이렇게 쓰면된다.
반환값
'''
모든 함수가 반환값이 반드시 필요한 것은 아니다.
함수 실행을 후에 딱히 반환할 데이터가 없다면 return을 사용하지 않아도 된다.
'''
def multi(n1, n2):
result = n1 * n2
print("%d x %d = %d" % (n1, n2, result))
a = multi(3, 8)
print(multi(7, 9)) # 7x9는 위에서 나온값이고 print는 None값이 출력된거다. return값이 업으므로.
'''
- 위 예제의 multi함수는 곱셈의 값을 구해서 호출부로 전달해주는 게 아니라 직접 곱셈을 수행하여 결과를
콘솔창에 출력하는 함수이다.
- 함수 내부에서 모든 로직한 후 반환값이 없기 때문에 return을 사용하지 않는다.
- 반환값이 없는 함수는 동작만 처리할 뿐 값이 아니기 때문에 다른 변수에 대입하거나
수식 내에서 사용할 수 없고 단독으로 호출해서 사용해야한다.
'''
'''
-함수의 반환값은 오직 하나다.
-다만 파이썬에서는 특별하게 return키워드 뒤에 반환값을 콤마로 여러 개 나열할 수 있다.
-이런 경우에는 리턴값이 여러 개가 되는 것이 아니라 해당 값들을 하나의 튜플로 묶어서 반환한다.
'''
def sum_multi(n1, n2):
add_res = add(n1, n2)
mul_res = n1 * n2
return add_res, mul_res
x = sum_multi(5, 5)
print(type(x)) #<class 'tuple'>
print(x) # (10, 25) 값이 2개 나온게 아니라 하나의 튜플로 나온거다. ()는 생략된거다. 원래생략 가능
'''
- 모든 함수는 함수 정의부에서 return키워드를 만나는 순간 함수가 강제로 종료된다.
-마치 반복문이 break를 만나면 반복문을 강제로 종료하는 것과 비슷한 원리이다.
- 함수안에선 break를 사용할수 없다. return을 써야한다.
'''
------------------------결과-----------------------------
20 8
3 x 8 = 24
7 x 9 = 63
None
<class 'tuple'>
(10, 25)
done.
퀴즈
'''
퀴즈 하기전에 알아둬야하는 내장함수
내장함수 map()
-map은 첫번째 인수로 타입을 적어주고, 두번째 인수로 문자열을 리스트를 적으면
해당 리스트 내부에 값을 일괄적으로 첫번째 인수의 타입으로 변환한
map구조의 데이터를 리턴한다.
'''
li = [1, 2, 3]
n1, n2, n3 = li # n1 = li[0] 할 필요없이 이렇게 가능.
print(n1, n2, n3)
print("------------------------------------")
n1, n2 = map(int, input('정수 :').split())
print(n1, n2)
'''
퀴즈
1. 3개의 정수를 입력받아라
2. 3개의 정수 중 가장 큰값을 반환하는 함수 max_of_three를 정의하라.
3. 3개의 정수 중 가장 작은값을 반환하는 함수 min_of_three를 정의하라.
4. 반환값을 통해 출력하라.
출력 예시 : "n1, n2, n3중 최대값: ??"
'''
def max_num(n1, n2, n3):
max_number = max(n1, n2, n3)
return max_number
def min_num(n1, n2, n3):
min_number = min(n1, n2, n3)
return min_number
n1, n2, n3 = map(int, input("정수 : ").split())
print("가장 큰 정수는 %d 입니다. " % max_num(n1,n2,n3))
print("가장 작은 정수는 %d 입니다. " %min_num(n1,n2,n3))
퀴즈 2
'''
1. 실수형태로 입력받은 키(cm)와 몸무게(kg)을 인수로 전달받아
2. bmi지수를 계산하여 반환함과 동시에
3. bmi가 25.0이상이면 "당신은 과체중입니다."
18.5이하면 "당신은 저체중입니다."
나머지는 "당신은 정상체중입니다."를 출력하는
Calc_BMI라는 함수를 정의하고 호출하세요.
# bmi 계산식 : 몸무게(kg) / (키(m) * 키(m))
#출력예시:
"키 -> 178.4cm, 체중-> 78.2kg의 체질량지수는 : 24.57입니다."
'''
def Cale_BMI(cm, kg):
m = float(cm) / 100
kg = float(kg)
bmi = kg / (m * m)
if bmi >= 25.0:
print("당신은 과체중입니다.")
elif bmi <= 18.5:
print("당신은 저체중입니다.")
else:
print("당신은 정상체중입니다.")
return bmi
'IT' 카테고리의 다른 글
13. 파이썬 - 인수의 기본값, 키워드 인수, docstring , 지역/전역변수 (0) | 2022.08.04 |
---|---|
12-1. 파이썬 - 함수 위치가변인수 (0) | 2022.08.02 |
11-1. 파이썬 자료형 집합 (0) | 2022.08.01 |
11. 파이썬 - 사전을 이용한 실습. (관리 프로그램 코딩) (0) | 2022.08.01 |
10. 파이썬 - 다차원 리스트 , 튜플, 사전 (0) | 2022.08.01 |