1. 함수 정의
'''
# 함수란?
- 명령어 집단
- 명령어를 copy and paste 를 하여 재사용 하기 위함
# 함수의 종류
- 사용자정의 함수 : 함수 정의, 함수 호출
- 내장 함수 : 파이썬에서 제공하는 함수. 별도 import 구문 없음.
ex) print(), input(), range() 등등...
- 외장 함수 : 별도 import 구문 필요로 함. 별도 설치가 필요할 수 있음(pip install 라이브러리명) : (프로그램이 무거워지기 때문에 필요에 의해서 설치한다.)
# 함수의 종류 - 매개변수(입력), 반환값(return)
- 매개변수 : 함수에 전달되는 변수 역할, 파라미터(parameter), 인자(argument)
매개변수X, 매개변수 O, 매개변수 초기값, 가변 인자
- 반환값 : return 문 , 최종 결과값에 해당
단계
#1 함수 정의
def 함수명(매개변수1, 매개변수2 ...) :
명령어
return 변수|값|식
#2 함수 호출
함수명(데이터값1, 데이터값2 ...)
'''
2. 매개변수 이용한 함수
# 매개변수 X, 반환값(return) X
# 고객의 이름을 입력받은 후 인사말 출력
def greeting() : #함수명은 소문자 이용
user_name = input('이름을 입력하세요...')
print(f' {user_name} 고객님!!! 오늘도 좋은 하루 되세요~ ')
print('='*20)
# 함수 호출
# greeting()
# greeting()
# 함수는 정의만 해선 아무 일도 생기지 않는다. 필요할 때 호출하자.
# 매개변수 O , 반환값(return) X
# 고객의 이름을 입력받은 후 인사말 출력
def greeting2(user_name) : #함수명은 소문자 이용
print(f' {user_name} 고객님!!! 오늘도 좋은 하루 되세요~ ')
print('='*20)
# 함수 호출
# greeting2() # TypeError
greeting2('고길동')
# 고길동 고객님!!! 오늘도 좋은 하루 되세요~
# 또는
user = input('이름을 입력하세요...')
greeting2(user)
결과)
이름을 입력하세요...최길동
최길동 고객님!!! 오늘도 좋은 하루 되세요~
'''
Quiz
2개의 인자를 받아서 연산자(+,-,/,*,%)를 이용하여 연산결과 출력하기
사용자정의 함수
# 함수 호출
cal(10,3)
10+3 = 13
10-3 = 7
10*3 = 30
10/3 = 3.33
10%3 = 1
'''
def cal(x, y) :
print(f'{x} + {y} = {x+y}')
print(f'{x} - {y} = {x-y}')
print(f'{x} * {y} = {x*y}')
print(f'{x} / {y} = {x/y:.2f}')
print(f'{x} % {y} = {x%y}')
print('-'*10)
cal(10,3)
호출하면
10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3.33
10 % 3 = 1
Quiz
# 숫자값을 인자로 전달받아서 출력하는 구구단 함수를 정의한 후 호출하여라
def gugu(k) :
cnt = 1
while cnt <= 9 :
print(f'{k} X {cnt} = {k*(cnt)}')
cnt += 1
gugu(9)
결과)
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
gugu(12)
결과)
12 X 1 = 12
12 X 2 = 24
12 X 3 = 36
12 X 4 = 48
12 X 5 = 60
12 X 6 = 72
12 X 7 = 84
12 X 8 = 96
12 X 9 = 108
Quiz
#숫자만큼 다음과 같은 형태로 별모양을 출력하는 함수를 정의한 후 호출하여라
def starPrint(t) :
cnt = 1
while cnt <= t :
print('*'*cnt)
cnt += 1
starPrint(10)
결과)
*
**
***
****
*****
******
*******
********
*********
**********
starPrint(5)
결과)
*
**
***
****
*****
3. for 문과 enumerate(문자열|리스트|튜플)
'''
for idx, value in enumerate(문자열|리스트|튜플)
idx, value를 이용한 명령문
즉, enumerate 는 안에 있는 값을 인덱스와 벨류값으로 표현
예제1)
my_list = ["a", "b", "c"]
for index, value in enumerate(my_list):
print(index, value)
결과)
0 a
1 b
2 c
예제2)
my_text = '가나다라마바사'
for index, value in enumerate(my_text):
print(index, value)
결과)
0 가
1 나
2 다
3 라
4 마
5 바
6 사
'''
4. for 문과 zip(문자열|리스트|튜플, 문자열|리스트|튜플)
# 위치인덱스가 같은 데이터를 묶어준다.
'''
`zip()` 함수는 무엇을 하는가? a
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for num, char in zip(list1, list2):
print(num, char)
- a) 두 리스트의 요소를 병렬로 묶어준다.
- b) 두 리스트의 요소를 교차로 출력한다.
- c) 첫 번째 리스트의 요소만 출력한다.
- d) 두 번째 리스트의 요소만 출력한다.
즉, 같은 위치의 인덱스끼리 묶어주는 함수를 zip()함수라 한다.
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(zip(list1, list2)) # 그냥 zip 해버리면 zip 객체가 만들어지므로 압축된 개념.
결과) <zip object at 0x00000245DD64B2C0>
print(list(zip(list1, list2))) # 바깥쪽을 list로 만들면 결과값 만들어져서 나옴
결과) [(1, 'a'), (2, 'b'), (3, 'c')] => 리스트안의 튜플
'''
'''
Quiz. 아래와 같은 중첩 리스트 구조에서 데이타 모두의 합을 구하는 코드는?
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
'''
'''
Quiz) 아래와 같은 중첩 리스트 구조에서 데이타 모두의 합을 구하는 코드는?
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
#중첩 for문을 이용한 풀이
total = 0
for row in matrix:
for num in row:
total += num
print(total)
결과) 45
5. for 문과 튜플인덱스 변수 활용
total2 = 0
for i, j, k in matrix :
total2 += (i+j+k)
print(total2)
결과) 45
'''
'''
Quiz. BMI(체질량지수)를 계산하고, 결과에 따라 메시지를 출력하는 함수 코드는?
# BMI 계산: 체중(kg) / (신장(m) ** 2)
# BMI 지수에 따른 메세지
bmi < 18.5 => 저체중
18.5 <= bmi < 24.9 => 정상 체중
25 <= bmi < 29.9 => 과체중
bmi >= 29.9 => 비만
# 함수 호출 사용 예시
weight = 70 # 체중 (kg)
height = 1.75 # 신장 (m)
calculate_bmi(weight, height)
#1) 함수 정의
def calculate_bmi(weight, height) :
#2) bmi 지수 구하기
# 체중(kg) / 신장(m)**2
bmi = weight/(height**2)
#3) bmi 값에 따른 메세지 출력
if bmi < 18.5 : msg = '저체중'
elif 18.5 <= bmi < 24.9 : msg = '정상체중'
elif 25 <= bmi < 29.9 : msg = '과체중'
elif bmi >= 29.9 : msg = '비만'
else : msg = '오류'
#4) 결과 출력
print(f" weight:{weight}kg , height: {height}m , BMI: {bmi:.2f} , 상태: {msg}")
#5) 함수 호출
weight = 70
height = 1.75
calculate_bmi(weight, height)
결과) weight:70kg , height: 1.75m , BMI: 22.86 , 상태: 정상체중
'Python' 카테고리의 다른 글
13. 모듈 사용하기(math 모듈, random 모듈) (4) | 2024.10.08 |
---|---|
12. 함수( 반환값, 매개변수, 람다함수, filter(), map()) (3) | 2024.10.08 |
10. 반복문 ( continue, pass, range , for ~, 리스트내포) (2) | 2024.10.07 |
9. 반복문(while문, 중첩 while문, 무한루프 while문) (0) | 2024.10.04 |
8. 제어문 (중첩 if문, 유효성 검사, in 과 not in 연산자) (13) | 2024.10.04 |