이번에는 이전에 배웠던 기본적인 개념들을 활용하여 간단한 문제를 해결할 수 있는 프로그램을 코딩해봤다. 크게 어려운 점은 없었으나 혼자서 구성한 코드보다 모범답안이 더 좋은 코드인 경우에는 별도로 코드를 짜서 더 효율적인 방식을 공부해봤다.

 

# 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