Day 24에서 함수 정의는 배웠는데, 매번 같은 값만 출력하면 의미 없죠? 🤔 ──이제 “값을 넣으면 다른 결과가 나오는” 진짜 유용한 함수를 만들 차례입니다! 😊
계산기 함수에 5와 3을 넣으면 8이 나오고, 인사 함수에 “홍길동”을 넣으면 “홍길동님, 안녕하세요!”가 나오는 것처럼!
매개변수로 입력을 받고, return으로 결과를 돌려주는 것. 이것이 함수의 진짜 파워입니다! 💡
(35분 완독 ⭐⭐⭐)
🎯 오늘의 학습 목표
- 매개변수와 인자의 차이 이해하기
- 위치 인자로 값 전달하기
- 키워드 인자로 명확하게 전달하기
- return으로 값 반환하기
- 여러 값 동시에 반환하기
- print vs return 완벽 이해하기
📚 사전 지식
🎯 학습 목표 1: 매개변수와 인자의 차이 이해하기
매개변수의 개념
매개변수(Parameter)는 함수가 작업을 수행하는 데 필요한 입력값을 받는 변수입니다.
실생활 비유:
1
2
3
4
5
| 🧮 계산기 = 함수
"5와 3을 더해줘" → 5와 3이 입력값 (매개변수)
계산기가 작업 수행
"8입니다" → 결과 (반환값)
|
매개변수 vs 인자
1
2
3
4
| def greet(name): # name = 매개변수 (Parameter)
print(f"안녕하세요, {name}님!")
greet("홍길동") # "홍길동" = 인자 (Argument)
|
차이점:
- 매개변수 (Parameter): 함수 정의할 때 괄호 안에 쓰는 변수
- 인자 (Argument): 함수 호출할 때 실제로 전달하는 값
첫 번째 매개변수 사용하기
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 매개변수 없는 함수 (어제 배운 것)
def say_hello():
print("안녕하세요!")
say_hello() # 안녕하세요!
# 매개변수 있는 함수 (오늘 배울 것!)
def greet(name):
print(f"안녕하세요, {name}님!")
greet("김철수") # 안녕하세요, 김철수님!
greet("이영희") # 안녕하세요, 이영희님!
greet("박민수") # 안녕하세요, 박민수님!
|
실행 결과:
1
2
3
4
| 안녕하세요!
안녕하세요, 김철수님!
안녕하세요, 이영희님!
안녕하세요, 박민수님!
|
🎯 학습 목표 2: 위치 인자 사용하기
예제 1: 숫자 출력하기
1
2
3
4
5
6
7
8
9
10
| def print_number(num):
"""받은 숫자를 출력하는 함수"""
print(f"받은 숫자: {num}")
print(f"숫자의 2배: {num * 2}")
print(f"숫자의 제곱: {num ** 2}")
# 여러 번 호출 가능
print_number(5)
print()
print_number(10)
|
실행 결과:
1
2
3
4
5
6
7
| 받은 숫자: 5
숫자의 2배: 10
숫자의 제곱: 25
받은 숫자: 10
숫자의 2배: 20
숫자의 제곱: 100
|
예제 2: 문자열 조작하기
1
2
3
4
5
6
7
8
9
10
| def make_uppercase(text):
"""문자열을 대문자로 변환하여 출력"""
upper_text = text.upper()
print(f"원본: {text}")
print(f"대문자: {upper_text}")
print(f"길이: {len(text)}글자")
make_uppercase("hello")
print()
make_uppercase("python")
|
실행 결과:
1
2
3
4
5
6
7
| 원본: hello
대문자: HELLO
길이: 5글자
원본: python
대문자: PYTHON
길이: 6글자
|
🎯 학습 목표 3: 키워드 인자로 명확하게 전달하기
두 개의 매개변수
1
2
3
4
5
6
7
8
| def add(a, b):
"""두 숫자를 더하여 출력"""
result = a + b
print(f"{a} + {b} = {result}")
add(5, 3) # 5 + 3 = 8
add(10, 20) # 10 + 20 = 30
add(7, 15) # 7 + 15 = 22
|
중요: 매개변수의 순서가 중요합니다!
1
2
3
4
5
| def introduce(name, age):
print(f"이름: {name}, 나이: {age}세")
introduce("홍길동", 25) # 이름: 홍길동, 나이: 25세
introduce(25, "홍길동") # 이름: 25, 나이: 홍길동세 (잘못됨!)
|
세 개 이상의 매개변수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| def calculate(a, b, operator):
"""세 개의 매개변수를 받는 계산 함수"""
print(f"계산: {a} {operator} {b}")
if operator == "+":
result = a + b
elif operator == "-":
result = a - b
elif operator == "*":
result = a * b
elif operator == "/":
result = a / b if b != 0 else "오류: 0으로 나눌 수 없음"
else:
result = "오류: 알 수 없는 연산자"
print(f"결과: {result}")
# 다양한 연산 수행
calculate(10, 5, "+") # 10 + 5 = 15
calculate(10, 5, "-") # 10 - 5 = 5
calculate(10, 5, "*") # 10 * 5 = 50
calculate(10, 5, "/") # 10 / 5 = 2.0
|
실전 예제: 학생 정보 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| def print_student_info(name, age, grade, major):
"""학생 정보를 형식에 맞춰 출력"""
print("="*40)
print("학생 정보".center(40))
print("="*40)
print(f"이름 : {name}")
print(f"나이 : {age}세")
print(f"학년 : {grade}학년")
print(f"전공 : {major}")
print("="*40)
# 사용
print_student_info("김철수", 21, 3, "컴퓨터공학")
print()
print_student_info("이영희", 20, 2, "경영학")
|
🎯 학습 목표 4: return으로 값 반환하기
return의 필요성
지금까지는 함수가 값을 출력만 했습니다. 하지만 실제로는 값을 반환해서 다른 곳에서 사용하는 것이 더 유용합니다!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # ❌ print만 사용 - 값을 재사용할 수 없음
def add_print(a, b):
print(a + b)
result = add_print(5, 3) # 8 출력됨
print(type(result)) # <class 'NoneType'>
print(result) # None
# print(result * 2) # 오류! None은 계산 불가
# ✅ return 사용 - 값을 재사용 가능!
def add_return(a, b):
return a + b
result = add_return(5, 3) # 값이 변수에 저장됨
print(result) # 8
print(result * 2) # 16 (재사용 가능!)
print(result + 10) # 18
|
return 기본 문법
1
2
3
| def 함수이름(매개변수):
# 작업 수행
return 반환값 # 이 값이 함수 호출한 곳으로 돌아감
|
기본 return 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| def get_sum(a, b):
"""두 숫자의 합을 반환"""
total = a + b
return total # total 값을 반환
# 반환값을 변수에 저장
result = get_sum(10, 20)
print(f"결과: {result}") # 결과: 30
# 반환값을 바로 사용
print(f"합계의 2배: {get_sum(5, 3) * 2}") # 합계의 2배: 16
# 반환값을 다른 함수의 인자로 사용
sum1 = get_sum(5, 3) # 8
sum2 = get_sum(10, 2) # 12
total = get_sum(sum1, sum2) # 8 + 12 = 20
print(f"전체 합계: {total}")
|
return의 특징
1. 함수를 즉시 종료합니다
1
2
3
4
5
6
7
8
9
10
11
| def check_positive(num):
"""양수인지 확인하는 함수"""
if num <= 0:
return False # 여기서 함수 종료
print("이 줄은 실행되지 않습니다")
# 양수일 때만 여기까지 실행됨
return True
print(check_positive(-5)) # False
print(check_positive(10)) # True
|
2. return 없으면 None 반환
1
2
3
4
5
| def no_return():
print("반환값이 없는 함수")
result = no_return()
print(f"반환값: {result}") # 반환값: None
|
3. 여러 곳에서 return 가능 (Early Return 패턴)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| def get_grade(score):
"""점수에 따른 학점 반환"""
if score >= 90:
return "A"
elif score >= 80:
return "B"
elif score >= 70:
return "C"
elif score >= 60:
return "D"
else:
return "F"
print(get_grade(95)) # A
print(get_grade(75)) # C
print(get_grade(50)) # F
|
🎯 학습 목표 5: 여러 값 동시에 반환하기
Python에서는 여러 값을 동시에 반환할 수 있습니다!
기본 문법
1
2
3
4
5
6
7
8
9
10
| def get_name_and_age():
"""이름과 나이를 반환"""
name = "홍길동"
age = 25
return name, age # 쉼표로 구분하여 여러 값 반환
# 반환값 받기
result_name, result_age = get_name_and_age()
print(f"이름: {result_name}") # 이름: 홍길동
print(f"나이: {result_age}") # 나이: 25
|
실전 예제 1: 사칙연산 결과 모두 반환
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| def calculate_all(a, b):
"""두 숫자의 사칙연산 결과를 모두 반환"""
add_result = a + b
sub_result = a - b
mul_result = a * b
div_result = a / b if b != 0 else None
return add_result, sub_result, mul_result, div_result
# 반환값 받기
add, sub, mul, div = calculate_all(10, 5)
print(f"덧셈: {add}") # 덧셈: 15
print(f"뺄셈: {sub}") # 뺄셈: 5
print(f"곱셈: {mul}") # 곱셈: 50
print(f"나눗셈: {div}") # 나눗셈: 2.0
|
실전 예제 2: 통계 정보 반환
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| def get_statistics(numbers):
"""리스트의 통계 정보를 반환"""
if not numbers:
return None, None, None, None
total = sum(numbers)
average = total / len(numbers)
maximum = max(numbers)
minimum = min(numbers)
return total, average, maximum, minimum
# 사용
scores = [85, 92, 78, 95, 88, 91]
total, avg, max_score, min_score = get_statistics(scores)
print("📊 성적 통계")
print(f"총점: {total}점")
print(f"평균: {avg:.2f}점")
print(f"최고점: {max_score}점")
print(f"최저점: {min_score}점")
|
실행 결과:
1
2
3
4
5
| 📊 성적 통계
총점: 529점
평균: 88.17점
최고점: 95점
최저점: 78점
|
튜플로 받기
여러 값을 반환하면 실제로는 튜플로 반환됩니다:
1
2
3
4
5
6
7
8
9
10
11
12
| def get_info():
return "홍길동", 25, "서울"
# 방법 1: 각각 받기
name, age, city = get_info()
# 방법 2: 튜플로 받기
info = get_info()
print(info) # ('홍길동', 25, '서울')
print(info[0]) # 홍길동
print(info[1]) # 25
print(info[2]) # 서울
|
🎯 학습 목표 6: print vs return 완벽 이해하기
차이점 이해하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # 1. print 사용 함수
def add_with_print(a, b):
result = a + b
print(result) # 화면에 출력만 함
# 2. return 사용 함수
def add_with_return(a, b):
result = a + b
return result # 값을 반환함
# 비교
print("=== print 사용 ===")
x = add_with_print(5, 3) # 8 출력됨
print(f"반환값: {x}") # 반환값: None
# print(x * 2) # 오류! None은 계산 불가
print("\n=== return 사용 ===")
y = add_with_return(5, 3) # 출력 안 됨
print(f"반환값: {y}") # 반환값: 8
print(f"2배: {y * 2}") # 2배: 16 (재사용 가능!)
|
실행 결과:
1
2
3
4
5
6
7
| === print 사용 ===
8
반환값: None
=== return 사용 ===
반환값: 8
2배: 16
|
언제 무엇을 사용할까?
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
| # ✅ print 사용: 단순히 보여주기만 하면 될 때
def show_welcome_message():
"""환영 메시지 출력"""
print("="*30)
print("Python 학습 프로그램")
print("="*30)
show_welcome_message()
# ✅ return 사용: 계산 결과를 다른 곳에서 사용할 때
def calculate_tax(price):
"""세금 계산"""
return price * 0.1
price = 10000
tax = calculate_tax(price)
total = price + tax
print(f"총액: {total}원")
# ✅ 둘 다 사용: 정보도 보여주고 값도 반환
def calculate_and_show(a, b):
"""계산하고 결과도 보여줌"""
result = a + b
print(f"계산 중: {a} + {b} = {result}") # 정보 출력
return result # 값도 반환
total = calculate_and_show(10, 20) # 계산 중: 10 + 20 = 30
print(f"반환값 사용: {total * 2}") # 반환값 사용: 60
|
💻 실전 활용 예제
예제 1: 온도 변환기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| def celsius_to_fahrenheit(celsius):
"""섭씨를 화씨로 변환"""
fahrenheit = (celsius * 9/5) + 32
return fahrenheit
def fahrenheit_to_celsius(fahrenheit):
"""화씨를 섭씨로 변환"""
celsius = (fahrenheit - 32) * 5/9
return celsius
# 사용
print("🌡️ 온도 변환기")
c_temp = 25
f_temp = celsius_to_fahrenheit(c_temp)
print(f"{c_temp}°C = {f_temp}°F")
f_temp = 77
c_temp = fahrenheit_to_celsius(f_temp)
print(f"{f_temp}°F = {c_temp:.1f}°C")
|
예제 2: 문자열 분석기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| def analyze_string(text):
"""문자열 분석 정보 반환"""
length = len(text)
upper_count = sum(1 for c in text if c.isupper())
lower_count = sum(1 for c in text if c.islower())
digit_count = sum(1 for c in text if c.isdigit())
space_count = text.count(' ')
return length, upper_count, lower_count, digit_count, space_count
# 사용
text = "Hello World 2024"
length, upper, lower, digit, space = analyze_string(text)
print(f"문자열: '{text}'")
print(f"총 길이: {length}자")
print(f"대문자: {upper}개")
print(f"소문자: {lower}개")
print(f"숫자: {digit}개")
print(f"공백: {space}개")
|
예제 3: 학점 계산기
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
| def calculate_grade(scores):
"""점수 리스트를 받아 평균과 학점 반환"""
if not scores:
return 0, "N/A"
average = sum(scores) / len(scores)
if average >= 90:
grade = "A"
elif average >= 80:
grade = "B"
elif average >= 70:
grade = "C"
elif average >= 60:
grade = "D"
else:
grade = "F"
return average, grade
# 사용
student_scores = [85, 92, 78, 95, 88]
avg, grade = calculate_grade(student_scores)
print(f"과목 점수: {student_scores}")
print(f"평균: {avg:.2f}점")
print(f"학점: {grade}")
|
예제 4: BMI 계산기
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
32
33
34
35
36
37
38
39
40
41
42
| def calculate_bmi(weight, height):
"""BMI를 계산하고 판정 결과 반환
Args:
weight: 체중(kg)
height: 키(cm)
Returns:
bmi: BMI 지수
status: 판정 결과
"""
# 키를 미터로 변환
height_m = height / 100
# BMI 계산
bmi = weight / (height_m ** 2)
# 판정
if bmi < 18.5:
status = "저체중"
elif bmi < 23:
status = "정상"
elif bmi < 25:
status = "과체중"
elif bmi < 30:
status = "비만"
else:
status = "고도비만"
return bmi, status
# 사용
weight = 70 # kg
height = 175 # cm
bmi, status = calculate_bmi(weight, height)
print("💪 BMI 계산 결과")
print(f"키: {height}cm")
print(f"체중: {weight}kg")
print(f"BMI: {bmi:.2f}")
print(f"판정: {status}")
|
💡 실전 팁 & 주의사항
💡 Tip 1: 매개변수 개수 일치시키기
함수를 호출할 때는 정의된 매개변수 개수와 정확히 일치하는 인자를 전달해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
| def greet(name, age):
print(f"{name}님, {age}세 환영합니다!")
# ✅ 올바른 사용
greet("철수", 25)
# ❌ 인자 부족
# greet("철수") # TypeError
# ❌ 인자 초과
# greet("철수", 25, "서울") # TypeError
|
💡 Tip 2: 의미 있는 매개변수 이름 사용하기
매개변수 이름은 용도를 명확히 알 수 있게 작성하세요.
1
2
3
4
5
6
7
| # ❌ 나쁜 예시
def calc(a, b):
return a * b / 100
# ✅ 좋은 예시
def calculate_discount(price, discount_rate):
return price * discount_rate / 100
|
💡 Tip 3: return은 함수를 즉시 종료합니다
return 이후의 코드는 실행되지 않으므로 주의하세요.
1
2
3
4
5
6
7
| def example():
print("1번 출력")
return "결과"
print("2번 출력") # 이 줄은 실행 안 됨!
result = example()
# 출력: 1번 출력 (2번은 출력 안 됨)
|
💡 Tip 4: 여러 값 반환 시 언패킹 활용
여러 값을 반환받을 때는 필요한 만큼만 받을 수 있습니다.
1
2
3
4
5
6
7
8
9
| def get_info():
return "홍길동", 25, "서울"
# 방법 1: 모두 받기
name, age, city = get_info()
# 방법 2: 튜플로 받기
info = get_info()
print(info[0]) # 홍길동
|
💡 Tip 5: None 반환 이해하기
return이 없는 함수는 자동으로 None을 반환합니다.
1
2
3
4
5
| def no_return():
print("출력만 함")
result = no_return()
print(result) # None
|
💡 Tip 6: print와 return 구분하기
print는 보여주기만, return은 값을 돌려줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # print 사용
def add_print(a, b):
print(a + b) # 출력만
result = add_print(5, 3) # 8 출력
print(result) # None
# return 사용
def add_return(a, b):
return a + b # 값 반환
result = add_return(5, 3) # 출력 안 됨
print(result) # 8
print(result * 2) # 16 (재사용 가능!)
|
💡 Tip 7: Early Return 패턴 (조기 반환)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| def process_age(age):
"""나이에 따른 분류 (Early Return 패턴)"""
# 잘못된 입력 처리
if age < 0:
return "오류: 잘못된 나이"
# 각 조건에서 바로 반환
if age < 18:
return "미성년자"
if age < 65:
return "성인"
return "노인"
# 테스트
print(process_age(-5)) # 오류: 잘못된 나이
print(process_age(15)) # 미성년자
print(process_age(30)) # 성인
print(process_age(70)) # 노인
|
💡 Tip 8: Guard Clause 패턴 (가드 절)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| def safe_divide(a, b):
"""안전한 나눗셈 (Guard Clause 패턴)"""
# 예외 상황을 먼저 처리
if b == 0:
return None
# 정상 로직
return a / b
# 사용
result = safe_divide(10, 2)
if result is not None:
print(f"결과: {result}")
else:
print("오류: 0으로 나눌 수 없습니다")
|
💡 Tip 9: 입력 검증 후 처리 패턴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| def validate_and_calculate(numbers):
"""입력 검증 후 계산"""
# 검증
if not numbers:
return 0, "입력 없음"
if not all(isinstance(n, (int, float)) for n in numbers):
return 0, "잘못된 입력"
# 계산
total = sum(numbers)
average = total / len(numbers)
return average, "성공"
# 테스트
avg, msg = validate_and_calculate([85, 90, 95])
print(f"평균: {avg}, 상태: {msg}")
avg, msg = validate_and_calculate([])
print(f"평균: {avg}, 상태: {msg}")
|
💡 Tip 10: 매개변수 개수 불일치 주의
1
2
3
4
5
6
7
8
9
10
11
| def add(a, b):
return a + b
# ❌ 오류: 인자 부족
# add(5) # TypeError: missing 1 required positional argument
# ❌ 오류: 인자 초과
# add(5, 3, 2) # TypeError: takes 2 positional arguments but 3 were given
# ✅ 올바름
result = add(5, 3)
|
💡 Tip 11: return 이후 코드는 실행 안 됨
1
2
3
4
5
6
| def example():
return "반환"
print("이 코드는 실행되지 않습니다") # Dead code
result = example()
# "이 코드는 실행되지 않습니다"는 출력 안 됨
|
💡 Tip 12: 반환값 무시하지 않기
1
2
3
4
5
6
7
8
9
10
11
12
| def get_sum(a, b):
return a + b
# ❌ 반환값을 받지 않음 - 아무 일도 안 일어남
get_sum(5, 3)
# ✅ 반환값을 변수에 저장하거나 바로 사용
result = get_sum(5, 3)
print(result)
# 또는
print(get_sum(5, 3))
|
🧪 연습 문제
문제 1: 원의 넓이 계산
원의 반지름을 받아 넓이를 반환하는 함수를 작성하세요.
- 함수 이름:
calculate_circle_area - 매개변수:
radius (반지름) - 반환값: 넓이 (π × r²)
- π는 3.14159 사용
💡 힌트
1
2
3
4
5
| # 힌트:
# 1. def calculate_circle_area(radius):
# 2. PI = 3.14159
# 3. area = PI * radius ** 2
# 4. return area
|
✅ 정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| def calculate_circle_area(radius):
"""원의 넓이를 계산하여 반환"""
PI = 3.14159
area = PI * radius ** 2
return area
# 테스트
radius = 5
area = calculate_circle_area(radius)
print(f"반지름 {radius}cm인 원의 넓이: {area:.2f}cm²")
# 여러 반지름 테스트
for r in [1, 3, 5, 10]:
a = calculate_circle_area(r)
print(f"반지름 {r}cm → 넓이 {a:.2f}cm²")
|
실행 결과:
1
2
3
4
5
| 반지름 5cm인 원의 넓이: 78.54cm²
반지름 1cm → 넓이 3.14cm²
반지름 3cm → 넓이 28.27cm²
반지름 5cm → 넓이 78.54cm²
반지름 10cm → 넓이 314.16cm²
|
문제 2: 최댓값과 최솟값 찾기
세 개의 숫자를 받아 최댓값과 최솟값을 반환하는 함수를 작성하세요.
- 함수 이름:
find_max_min - 매개변수:
a, b, c (세 개의 숫자) - 반환값: 최댓값, 최솟값 (두 개)
✅ 정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| def find_max_min(a, b, c):
"""세 숫자 중 최댓값과 최솟값 반환"""
maximum = max(a, b, c)
minimum = min(a, b, c)
return maximum, minimum
# 테스트
max_val, min_val = find_max_min(5, 12, 3)
print(f"숫자: 5, 12, 3")
print(f"최댓값: {max_val}")
print(f"최솟값: {min_val}")
# 다른 예제
max_val, min_val = find_max_min(100, 50, 75)
print(f"\n숫자: 100, 50, 75")
print(f"최댓값: {max_val}")
print(f"최솟값: {min_val}")
|
실행 결과:
1
2
3
4
5
6
7
| 숫자: 5, 12, 3
최댓값: 12
최솟값: 3
숫자: 100, 50, 75
최댓값: 100
최솟값: 50
|
문제 3: 짝수 홀수 판별기
숫자를 받아 짝수인지 홀수인지 판별하여 반환하는 함수를 작성하세요.
- 함수 이름:
check_even_odd - 매개변수:
number - 반환값: “짝수” 또는 “홀수” (문자열)
✅ 정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| def check_even_odd(number):
"""짝수/홀수 판별"""
if number % 2 == 0:
return "짝수"
else:
return "홀수"
# 더 간결한 버전
def check_even_odd_v2(number):
"""짝수/홀수 판별 (간결 버전)"""
return "짝수" if number % 2 == 0 else "홀수"
# 테스트
for num in [1, 2, 3, 4, 5, 10, 15, 20]:
result = check_even_odd(num)
print(f"{num}은(는) {result}입니다")
|
실행 결과:
1
2
3
4
5
6
7
8
| 1은(는) 홀수입니다
2은(는) 짝수입니다
3은(는) 홀수입니다
4은(는) 짝수입니다
5은(는) 홀수입니다
10은(는) 짝수입니다
15은(는) 홀수입니다
20은(는) 짝수입니다
|
💬 자주 묻는 질문 (FAQ)
Q1. 매개변수와 인자의 차이는 무엇인가요?
A: 매개변수(Parameter)는 함수를 정의할 때 괄호 안에 쓰는 변수이고, 인자(Argument)는 함수를 호출할 때 실제로 전달하는 값입니다.
1
2
3
4
| def greet(name): # name = 매개변수 (Parameter)
print(f"안녕, {name}!")
greet("철수") # "철수" = 인자 (Argument)
|
Q2. return과 print의 차이는 무엇인가요?
A: print는 화면에 출력만 하고, return은 값을 반환하여 다른 곳에서 재사용할 수 있게 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # print: 출력만, 재사용 불가
def add_print(a, b):
print(a + b)
x = add_print(5, 3) # 8 출력
print(x) # None (재사용 불가)
# return: 값 반환, 재사용 가능
def add_return(a, b):
return a + b
y = add_return(5, 3) # 출력 안 됨
print(y) # 8
print(y * 2) # 16 (재사용 가능!)
|
Q3. 함수에 return이 없으면 어떻게 되나요?
A: return이 없는 함수는 자동으로 None을 반환합니다.
1
2
3
4
5
6
| def no_return():
print("이 함수는 출력만 합니다")
result = no_return()
print(result) # None
print(type(result)) # <class 'NoneType'>
|
Q4. 여러 값을 반환하면 어떤 타입이 되나요?
A: 여러 값을 쉼표로 구분하여 반환하면 튜플(tuple) 타입으로 반환됩니다.
1
2
3
4
5
6
7
8
9
10
| def get_info():
return "홍길동", 25, "서울"
result = get_info()
print(type(result)) # <class 'tuple'>
print(result) # ('홍길동', 25, '서울')
# 언패킹하여 받기
name, age, city = get_info()
print(name) # 홍길동
|
Q5. return 이후의 코드는 실행되나요?
A: 아니요, 실행되지 않습니다. return은 함수를 즉시 종료시킵니다.
1
2
3
4
5
6
7
8
9
| def example():
print("1번 출력")
return "결과"
print("2번 출력") # 이 줄은 절대 실행 안 됨! (Dead code)
return "다른 결과" # 이것도 실행 안 됨!
result = example()
# 출력: 1번 출력 (2번은 출력되지 않음)
print(result) # 결과
|
Q6. 반환값을 꼭 변수에 저장해야 하나요?
A: 아니요, 필요에 따라 선택하면 됩니다. 바로 사용하거나, 변수에 저장하거나, 무시할 수도 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| def add(a, b):
return a + b
# 방법 1: 변수에 저장
result = add(5, 3)
print(result)
# 방법 2: 바로 사용
print(add(10, 20))
# 방법 3: 다른 함수의 인자로 사용
print(f"합계: {add(7, 8)}")
# 방법 4: 무시 (하지만 이러면 함수 호출 의미 없음)
add(1, 2) # 반환값을 사용하지 않음
|
📝 오늘 배운 내용 정리
핵심 개념
- 매개변수 (Parameter)
- 함수가 입력받는 변수
def func(param1, param2): - 여러 개 사용 가능
- 인자 (Argument)
- 함수 호출 시 전달하는 실제 값
func(value1, value2)
- return 문
- 함수의 결과값을 반환
- 함수를 즉시 종료
- 반환값을 변수에 저장하거나 바로 사용 가능
- 여러 값 반환
return val1, val2, val3 - 튜플로 반환됨
- 언패킹으로 받기:
a, b, c = func()
- print vs return
- print: 화면에 출력만 (재사용 불가)
- return: 값을 반환 (재사용 가능)
🎯 실습 과제
다음 함수들을 작성해보세요:
과제 1: 할인 가격 계산기
1
2
3
4
5
6
7
8
9
10
| """
함수 이름: calculate_discount_price
매개변수: original_price (원가), discount_rate (할인율 %)
반환값: 할인된 가격
예시:
calculate_discount_price(10000, 20) # 8000 반환
"""
# 여기에 코드를 작성하세요!
|
과제 2: 문자열 카운터
1
2
3
4
5
6
7
8
9
10
11
| """
함수 이름: count_characters
매개변수: text (문자열)
반환값: 문자 개수, 공백 개수, 숫자 개수 (3개)
예시:
chars, spaces, digits = count_characters("Hello 123")
# chars=8, spaces=1, digits=3
"""
# 여기에 코드를 작성하세요!
|
🔗 관련 자료
📚 이전 학습
Day 24: 함수 정의하기 (def) ⭐⭐⭐
함수의 기본 개념과 정의 방법, docstring 작성법을 배웠습니다!
📚 다음 학습
Day 26: 기본 매개변수와 키워드 인자 ⭐⭐⭐
내일은 더 유연한 함수를 만드는 방법을 배웁니다!
“늦었다고 생각할 때가 가장 빠른 시기입니다!” 🚀
| Day 25/100 | Phase 3: 제어문과 함수 | #100DaysOfPython |