728x90
728x90
안녕하세요. 지난번에 제시된 연습문제의 답안을 작성해드리겠습니다.
문제1 답안
def find_multiples():
"""
문제 1: 1부터 100까지의 숫자 중 3의 배수이면서 5의 배수인 숫자 출력
"""
print("\n[문제 1] 1-100 중 3과 5의 공배수")
print("-" * 40)
multiples = [num for num in range(1, 101) if num % 3 == 0 and num % 5 == 0]
print(f"3과 5의 공배수: {multiples}")
print(f"총 {len(multiples)}개의 숫자가 있습니다.")
def main():
print("Python 연습문제 답안")
print("=" * 40)
find_multiples()
if __name__ == "__main__":
main()
문제1 결과
Python 연습문제 답안
========================================
[문제 1] 1-100 중 3과 5의 공배수
----------------------------------------
3과 5의 공배수: [15, 30, 45, 60, 75, 90]
총 6개의 숫자가 있습니다.
Process finished with exit code 0
문제1 해설
- 리스트 컴프리헨션을 활용하여 1부터 100까지의 숫자 중 3과 5의 공배수를 찾습니다.
- 각 숫자에 대해 3으로 나누어 떨어지면서(num % 3 == 0) 동시에 5로도 나누어 떨어지는(num % 5 == 0) 조건을 확인합니다.
- 결과로 [15, 30, 45, 60, 75, 90]이 출력됩니다.
문제2 답안
def is_prime(n):
"""
문제 2: 소수 판별 함수
"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def check_prime():
"""
문제 2: 사용자 입력 소수 판별 프로그램
"""
print("\n[문제 2] 소수 판별 프로그램")
print("-" * 40)
while True:
try:
num = int(input("판별할 숫자를 입력하세요 (종료:0): "))
if num == 0:
break
result = "소수입니다." if is_prime(num) else "소수가 아닙니다."
print(f"{num}은(는) {result}")
except ValueError:
print("올바른 숫자를 입력해주세요.")
def main():
print("Python 연습문제 답안")
print("=" * 40)
check_prime()
if __name__ == "__main__":
main()
문제2 결과
Python 연습문제 답안
========================================
[문제 2] 소수 판별 프로그램
----------------------------------------
판별할 숫자를 입력하세요 (종료:0): 1
1은(는) 소수가 아닙니다.
판별할 숫자를 입력하세요 (종료:0): 2
2은(는) 소수입니다.
판별할 숫자를 입력하세요 (종료:0): 3
3은(는) 소수입니다.
판별할 숫자를 입력하세요 (종료:0): 0
Process finished with exit code 0
문제2 해설
- is_prime() 함수는 주어진 숫자가 소수인지 판별하는 효율적인 알고리즘을 구현했습니다.
- 2부터 입력값의 제곱근까지만 확인하여 불필요한 반복을 줄였습니다.
- 사용자의 잘못된 입력(예: 문자열)을 처리하기 위해 예외 처리를 포함했습니다.
- 0을 입력하면 프로그램이 종료되도록 하여 사용자 편의성을 고려했습니다.
def is_prime(n):
이 줄은 함수를 만드는 첫 줄입니다. is_prime
이라는 이름의 함수를 만들고, n
이라는 숫자를 입력받습니다. 여기서 n
은 우리가 소수인지 검사하고 싶은 숫자입니다.
"""
문제 2: 소수 판별 함수
"""
이 부분은 함수에 대한 설명문입니다. 다른 사람이 이 코드를 볼 때 이 함수가 무엇을 하는지 알 수 있도록 돕는 설명서와 같습니다.
if n < 2:
return False
이 부분은 입력받은 숫자가 2보다 작은지 확인합니다. 만약 숫자가 0이나 1이라면 바로 False
(거짓)을 반환합니다. 왜냐하면 0과 1은 소수가 아니기 때문입니다.
for i in range(2, int(n ** 0.5) + 1):
이 줄은 반복문을 시작합니다.
n ** 0.5
는 n의 제곱근을 구합니다. 예를 들어 16 ** 0.5는 4가 됩니다.int()
는 소수점을 버리고 정수로 만듭니다.range(2, 숫자)
는 2부터 '숫자-1'까지의 범위를 만듭니다.+ 1
을 하는 이유는 range가 마지막 숫자를 포함하지 않기 때문입니다.
if n % i == 0:
return False
이 부분은 나눗셈을 확인합니다.
n % i
는 n을 i로 나눈 나머지를 구합니다.- 만약 나머지가 0이라면 (
== 0
) 이 숫자는 i로 나누어떨어진다는 뜻입니다. - 나누어떨어지면 이 숫자는 소수가 아니므로
False
를 반환합니다.
return True
이 마지막 줄은 모든 검사를 통과했을 때 실행됩니다. 즉, 어떤 수로도 나누어떨어지지 않는다면 이 숫자는 소수이므로 True
(참)을 반환합니다.
예를 들어 13을 검사한다면:
- 13은 2보다 크므로 계속 진행
- 13의 제곱근은 약 3.6이므로 2와 3으로만 검사
- 13 % 2 = 1 (나누어떨어지지 않음)
- 13 % 3 = 1 (나누어떨어지지 않음)
- 모든 검사를 통과했으므로
True
반환
이렇게 이 함수는 효율적으로 소수를 판별할 수 있습니다.
문제3 답안
def print_multiplication_table():
"""
문제 3: 50 이하 결과만 출력하는 구구단
"""
print("\n[문제 3] 50 이하 구구단")
print("-" * 40)
for i in range(2, 10):
print(f"\n{i}단:")
for j in range(1, 10):
result = i * j
if result > 50:
break
print(f"{i} * {j} = {result}")
def main():
print("Python 연습문제 답안")
print("=" * 40)
print_multiplication_table()
if __name__ == "__main__":
main()
문제3 결과
Python 연습문제 답안
========================================
[문제 3] 50 이하 구구단
----------------------------------------
2단:
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3단:
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
4단:
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
5단:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
6단:
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
7단:
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
8단:
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
9단:
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
Process finished with exit code 0
문제3 해설
- 이중 반복문을 사용하여 2단부터 9단까지의 구구단을 구현했습니다.
- 각 단에서 계산 결과가 50을 초과하면 break문을 사용하여 다음 단으로 넘어갑니다.
- 결과를 보기 좋게 출력하기 위해 서식을 적절히 사용했습니다.
728x90
300x250
'Python' 카테고리의 다른 글
Python 기초 4장 - 함수(Functions) 완벽 가이드 (0) | 2024.11.27 |
---|---|
Python PEMDAS-LR - 파이썬 연산자 우선순위와 계산 방향 이해하기 (0) | 2024.11.27 |
Python 기초 3장 - 제어문 완벽 가이드 (0) | 2024.11.26 |
Python 기초 2장 - 변수와 자료형 완벽 가이드 (0) | 2024.11.24 |
Python 기초 1장 - print() 함수 완벽 가이드 (0) | 2024.11.23 |