이번에는 이전에 배웠던 기본적인 개념들을 활용하여 간단한 문제를 해결할 수 있는 프로그램을 코딩해봤다. 크게 어려운 점은 없었으나 혼자서 구성한 코드보다 모범답안이 더 좋은 코드인 경우에는 별도로 코드를 짜서 더 효율적인 방식을 공부해봤다.
# 100 이하의 자연수 중 8의 배수이지만 12의 배수는 아닌 수를 출력
# 초안
i = 1
while i <= 100:
if i % 8 != 0:
i += 1
continue
elif i % 12 == 0:
i += 1
continue
else:
print(i)
i += 1
# 모범 답안
i = 1
while i <= 100:
if i % 8 == 0 and i % 12 != 0:
print(i)
i += 1
부울린 형식에 익숙하지 않아 and 연산자를 떠올리지 못했다. 모든 경우의 수를 if else로 나눴는데 모범답안을 보면 훨씬 간단하게 해결할 수 있는 것을 알 수 있다.
# 1000 미만의 자연수 중 2의 배수 또는 3의 배수의 총합
i = 1
total = 0
while i < 1000:
if i % 2 == 0 or i % 3 == 0:
total += i
i += 1
print(total)
이 실습부터 문제를 천천히 읽어보고 어떤 변수가 필요한지, 최소한의 변수 개수를 어떻게 선언할지를 고민하며 코드를 작성하는 습관을 길렀다.
# 자연수 N의 약수를 모두 출력하고 총 몇개인지 구하는 코드
def devide_cal(N):
i = 1 # 약수 변수
count = 0 # 약수 개수 측정 변수
while i <= N:
if N % i == 0:
print(i)
count += 1
i += 1
print(f"{N}의 약수는 총 {count}개입니다.")
devide_cal(120)
# 구구단 만들기
i = 1 # 구구단 앞자리 숫자 (i * j)
while i <= 9:
j = 1 # 구구단 뒷자리 숫자 (i * j)
while j <= 9:
print(f"{i} * {j} = {i * j}")
j += 1
i += 1
# 복리 계산기
# 유의사항: investment에는 예금할 금액을 완전한 정수로 적고, interest는 퍼센티지를 소숫점으로 기입하며, 몇 년간 진행할지 period에 기입하시오.
def interest_calculator(investment, interest, period):
year = 0
while year < period:
investment *= (1 + interest)
year += 1
print(f"{period}년 후 예금은 {int(investment)}원이 되었습니다.")
interest_calculator(50000000, 0.05, 5)
복리 계산기도 어려운 점은 없었지만, f-string 포맷팅 방식에서 모르는 부분이 나와서 곤란했다. 포맷팅하는 값 중에서 긴 소수가 나오면 소숫점 자리를 정해주어야 하는 경우가 있는데 f-string에서는 어떻게 하는 것인지 몰랐다. 하지만 굉장히 간단하게 {(변수):.(소숫점자리)f} 과 같이 설정할 수 있었으며, 만약 삽입하는 내용이 식이라면 괄호를 통해 묶어줘야 한다는 것을 깨달았다.
# 피보나치 수열
# 초안
a = 1
b = 1
c = 0 # 다음 식에서 a가 될 값
d = 0 # 다음 식에서 b가 될 값
count = 3
print(a)
print(b)
while count <= 50:
print(a + b) # 수열 출력
c = b
d = a + b
a = c
b = d
count += 1 # 항 순번
# 모범 답안
previous = 0
current = 1
count = 1 # 항 수
while count <= 50:
print(current)
temp = previous
previous = current
current += temp
count += 1
# OR
previous = 0
current = 1
count = 1 # 항 수
while count <= 50:
print(current)
previous, current = current, previous + current
count += 1
처음에 피보나치 수열을 출력하는 코드를 짰을때, temp라는 일시적인 저장공간의 유무도 몰랐고 파이썬에서는 (함수 1), (함수 2) = (대입 값 1), (대입 값 2)의 형식이 사용 가능하다는 것을 몰라 현재 고려해야되는 값과 다음 항에서 고려해야하는 값을 모두 변수로 지정해 사용했다. 더 적은 변수를 사용해 간편하게 코드를 구성할 수 있다는 점을 배웠다.
'IT Self-study > Python' 카테고리의 다른 글
| 파이썬 실습 (2): 리스트 (0) | 2025.04.04 |
|---|---|
| 파이썬 기초: 리스트 (0) | 2025.04.04 |
| 파이썬 기초: 제어문 (0) | 2025.03.26 |
| 파이썬 기초: 추상화 (1) | 2025.03.25 |
| 파이썬 기초: 데이터 형 (0) | 2025.03.24 |