1. 이 숫자 소수야?
아래 문제를 해결해 봅시다.
- 숫자 2개를 차례로 입력 받습니다.
- 숫자 2개를 +, -, // 계산을 통해 나온 숫자들이 소수인지 판별해 주세요.
- 계속 입력할지에 대해 묻고 no라고 입력하면 입력 받는 것을 멈춰 주세요.(그 외는 계속 입력받아주세요.)
예시 입력/출력 :
숫자1 을 입력해 주세요 : 21
숫자2 를 입력해 주세요 : 5
17 은 소수 입니다.
입력을 계속 하시겠습니까? : y
...
입력을 계속 하시겠습니까? : no
< 정답 코드 >
while True:
num_1 = int(input("숫자1 을 입력해 주세요 : "))
num_2 = int(input("숫자2 를 입력해 주세요 : "))
sum_num = num_1 + num_2
minus_num = num_1 - num_2
divide_num = num1 // num_2
# 더하기 숫자 소수인지 확인
if sum_num == 2:
print(f"{sum_num}은 소수 입니다.")
else:
for i in range(2, sum_num):
if sum_num % i == 0:
break
else:
print(f"{sum_num}은 소수 입니다.")
# 빼기 숫자 소수인지 확인
if minus_num == 2:
print(f"{minus_num}은 소수 입니다.")
else:
for i in range(2, minus_num):
if minus_num % i == 0:
break
else:
print(f"{minus_num}은 소수 입니다.")
# 나누기 숫자 소수인지 확인
if divide_num == 2:
print(f"{divide_num}은 소수 입니다.")
else:
for i in range(2, divide_num):
if divide_num % i == 0:
break
else:
print(f"{divide_num}은 소수 입니다.")
user_input = input("입력을 계속 하시겠습니까? :")
if user_input == "no":
break
소수를 확인해야 할 숫자는 다르지만 방법은 동일해서 똑같은 코드가 3번씩이나 반복해서 쓰이고 있죠?
함수를 이용하면 훨씬 간결하게 위 문제를 해결 할 수 있어요!
2. 함수란?

수학에서 함수 정의는 입력이 주어지면 특정 규칙에 따라 출력을 반환하는 것을 의미합니다.
코딩에서 함수도 다르지 않습니다.
입력이 주어지면 어떤 코드가 실행되어 실행 결과 값을 반환하는 것입니다.
실제로 코딩에서 함수는 이렇게 사용 할 수 있습니다.
# 함수 정의
def 함수명(파라미터):
실행 코드 ...
return 반환값
# 함수 실행
변수 = 함수명(입력 데이터)
함수의 입력은 파라미터를 통해서 받습니다.
함수의 출력은 return을 통해 반환합니다.
두 수가 입력으로 주어지면 두 수를 더한 값을 반환하는 함수를 살펴 봅시다.
# 함수 정의
def sum_nums(num1, num2):
sum_num = num1 + num2
return sum_num
이런 식으로 함수를 정의 할 수 있습니다.
실제로 사용할 때는 변수를 불러오듯이 함수명을 불러옵니다
num = sum_nums(19, 23)
이때 함수 정의에서 정한 파라미터 수 만큼 괄호 안에 데이터를 넣어줘야 합니다.
그리고 반환값을 저장하기 위해서 “변수명 =” 을 활용하여 반환값을 저장합니다.
💡return 이 없는 함수함수 내부에 return 이 없을 수 있습니다.
이는 return None 이 생략된 것입니다.
즉, 함수를 실행 시키면 어떤 일만하고 따로 출력 할 필요 없을 땐 return을 작성하지 않습니다.파라미터가 없는 경우도 마찬가지 입니다.(입력 필요 없이 어떤 일을 하고 싶을 때 사용)
# 입출력 없는 함수 def print_ten(): print(10) # 출력이 따로 없으니 실행시 변수에 저장하지 않는다. print_ten()
3. 이 숫자 소수야? : 함수 해결법
함수를 사용하여 이숫자 소수야? 문제를 해결해봅시다.
- 숫자 2개를 차례로 입력 받습니다.
- 숫자 2개를 +, -, // 계산을 통해 나온 숫자들이 소수인지 판별해 주세요.
- 계속 입력할지에 대해 묻고 no라고 입력하면 입력 받는 것을 멈춰 주세요.(그 외는 계속 입력받아주세요.)
예시 입력/출력 :
숫자1 을 입력해 주세요 : 21
숫자2 를 입력해 주세요 : 5
17 은 소수 입니다.
입력을 계속 하시겠습니까? : y
...
입력을 계속 하시겠습니까? : no
< 정답 코드>
def is_prime_num(num):
if num == 2:
return True
for i in range(2, num):
if num % i == 0:
return False
return True
while True:
num_1 = int(input("숫자1 을 입력해 주세요 : "))
num_2 = int(input("숫자2 를 입력해 주세ㅛ : "))
sum_num = num_1 + num_2
minus_num = num_1 - num_2
divide_num = num1 // num_2
if is_prime_num(sum_num):
print(f"{sum_num} 은 소수 입니다.")
if is_prime_num(minus_num):
print(f"{minus_num} 은 소수 입니다.")
if is_prime_num(divide_num):
print(f"{divide_num} 은 소수 입니다.")
user_input = input("입력을 계속 하시겠습니까? :")
if user_input == "no":
break
이렇듯 함수는 반복되는 코드를 간결하게 해줍니다.
또한 함수는 해야할 일을 쪼개어 작은 단위의 일을 해결합니다.
이렇게 잘 쪼개어진 일은 유지 보수에 훨씬 유리합니다!
4. 연습문제
문제 1. 다음 중 함수의 정의에 대한 설명으로 옳은 것은 무엇인가요?
A. 함수는 입력 없이도 실행될 수 없다.
B. 함수는 반드시 return 값을 가져야 한다.
C. 함수는 반복되는 코드를 간결하게 만들고 유지 보수를 쉽게 해준다.
D. 함수는 파라미터를 통해 출력 값을 전달한다.
문제 2. 다음 코드에서 is_prime_num(7)을 실행했을 때 반환되는 값은 무엇인가요?
def is_prime_num(num):
if num == 2:
return True
for i in range(2, num):
if num % i == 0:
return False
return True
A. True
B. False
C. 7
D. None
문제 3. 아래 코드에서 오류가 발생하는 이유는 무엇인가요?
def add_numbers(a, b):
return a + b
result = add_numbers(3)
print(result)
문제 4. 다음 코드의 실행 결과로 올바른 것은 무엇인가요?
def check_number():
print("숫자를 확인합니다.")
check_number()
A. "숫자를 확인합니다."가 출력되고, 반환 값은 None
B. "숫자를 확인합니다."가 출력되고, 반환 값은 True
C. 아무것도 출력되지 않고, 반환 값은 None
D. 오류가 발생한다
문제 5. 다음 중 소수 판별 코드를 함수로 만들 때 개선된 점으로 볼 수 없는 것은 무엇인가요?
A. 코드의 가독성이 좋아진다.
B. 코드의 재사용성이 높아진다.
C. 실행 속도가 빨라진다.
D. 유지 보수가 쉬워진다.'파이썬 기초' 카테고리의 다른 글
| [ 파이썬 기초 ] 19. 클래스 (0) | 2025.03.21 |
|---|---|
| [ 파이썬 기초 ] 18. 변수의 생명 주기 (0) | 2025.03.21 |
| [ 파이썬 기초 ]16. while 문 (0) | 2025.03.14 |
| [ 파이썬 기초] 15. for문 핵심 문제 (0) | 2025.03.14 |
| [ 파이썬 기초 ] 14. for문 (0) | 2025.03.06 |