본문 바로가기

연구노트/Python

파이썬 프로그래밍 기초(1)

 

 
파이썬 프로그래밍 기초(1)
 

 

 

구구단 만들기

프로그램을 만들기에 앞서 방향성을 어떻게 잡아야 할지 모르겠다면 우선 입력과 출력을 생각해보자.

가령 구구단 프로그램 중 2단을 만든다면 2를 입력값으로 주었을 때 어떻게 출력되어야 할지 생각해 보자.

그래도 그림이 그려지지 않는 것 같으면 직접 적어 가며 프로그램을 시각화 해보자.

 

1. 먼저 에디터를 열고 다음과 같이 입력한다. multi라는 함수에 2를 입력값으로 주면 result라는 변수에 결괏값을 넣으라는 뜻이다.

## 변수에 결괏값 넣기
result = multi(2)
 

 

2. 이제 결괏값을 어떤 형태로 받을 것인지 고민해 보자. 2단이므로 결괏값은 2, 4, 6, … 18까지 나올 것이다.

이런 종류의 데이터는 리스트 자료형이 적합하다.

result = [2, 4, 6, 8, 10, 12, 14, 16, 18]같은 결과를 얻어야겠다는 생각을 먼저 하고 프로그래밍을 시작하는 태도가 필요하다.

이런 식으로 머릿속에 그림이 그려지기 시작하면 의외로 생각이 가볍게 좁혀지는 것을 느낄 수 있을 것이다.

 

3. 어떻게 만들지 생각해봤으므로 1번에서 입력한 문장은 지우고 진짜 프로그램을 짜보자.

일단 이름을 multi라고 지은 함수를 다음과 같이 만든다.

아래와 같은 함수를 만들고 multi(2)처럼 실행하면 2를 출력한다.

## 함수 결괏값 확인
def multi(n):
    print(n)
 

 

4. 이제 결괏값을 담을 리스트를 하나 생성하자. 앞에서 작성한 print(n)은 입력이 잘되는지를 확인하기 위한 것이므로 지워도 좋다.

## 함수 만들기1
def multi(n):
    result = []
 

 

5. 다음으로 result에 2, 4, 6, … 18을 어떻게 넣어야 할지 생각해보자.

하드 코딩 방법으로 다음과 같이 리스트에 요소를 추가하는 append 함수를 사용하기로 결정했다.

## 함수 만들기2
def multi(n):
    result = []
    result.append(n*1)
    result.append(n*2)
    result.append(n*3)
    result.append(n*4)
    result.append(n*5)
    result.append(n*6)
    result.append(n*7)
    result.append(n*8)
    result.append(n*9)
    return result
print(multi(2))
→ [2, 4, 6, 8, 10, 12, 14, 16, 18]
 

 

6. 그런데 위 함수는 반복이 너무 많다. 이때 반복문을 사용하여 표현할 수 있다.

이제 1부터 9까지 출력해 주는 반복문을 만들어 보자. 인터프리터를 열어 다음과 같이 테스트해보자.

## 반복문 확인
i = 1
>>> while i < 10:
     print(i)
     i = i + 1
→ 1
→ 2
→ 3
→ 4
→ 5
→ 6
→ 7
→ 8
→ 9
 

우리가 원하는 대로 결괏값을 보여준다. 이제 이 반복문을 사용하여 다시 구구단 프로그램을 만들어 보자.

 

 

7. 효율적인 코드를 바탕으로 완성한 구구단 함수는 다음과 같다.

## 구구단 함수
def multi(n):
    result = []
    i = 1
    while i < 10:
        result.append(n*i)
        i = i + 1
    return result
print(multi(2))
→ [2, 4, 6, 8, 10, 12, 14, 16, 18]
 

우리가 원하는 결괏값을 얻을 수 있다. 지금은 간단한 프로그램이라 첫 번째 방법과 두 번째 방법의 차이점을 느끼지 못할 수도 있지만

복잡한 함수를 만들 때는 구체적이고 단계적으로 접근하는 방식이 많은 도움이 된다.

프로그래밍을 할 때는 매우 구체적으로 접근해야 머리가 덜 아프다는 것을 기억하자.

 

 

3과 5의 배수 합하기

다음 문제에 대해서 생각해 보자.

[10 미만의 자연수에서 3과 5의 배수를 구하면 3, 5, 6, 9이다. 이들의 총합은 23이다.

1,000 미만의 자연수에서 3의 배수와 5의 배수의 총합을 구하라.]

이 문제를 풀기 위한 중요 포인트는 2가지다. 1가지는 1,000 미만의 자연수를 구하는 방법이고

또 다른 1가지는 3과 5의 배수를 구하는 것이다. 이 2가지만 해결되면 문제는 쉽게 해결될 것으로 보인다.

 

1. 먼저 1000 미만의 자연수는 어떻게 구할 수 있을지 생각해 보자.

여러 가지 방법이 떠오르지만, 다음과 같이 변수에 초깃값 1을 준 후 루프를 돌리며 1씩 증가시켜서 999까지 진행하는 방법이

가장 일반적인 방법이다.

## 1000미만 자연수 구하기1
n = 1
while n < 1000:
    print(n)
    n += 1
 

또는 다음과 같이 파이썬의 range 함수를 사용할 수도 있다.

## 1000미만 자연수 구하기2
for n in range(1, 1000):
    print(n)
 

2가지 예제 모두 실행하면 1부터 999까지 출력하는 것을 확인할 수 있다.

 

 

2. 1,000까지의 자연수를 차례로 구하는 방법을 알았으므로 3과 5의 배수를 구하는 방법을 알아보자.

1,000 미만의 자연수 중 3의 배수는 다음과 같이 증가할 것이다.

3, 6, 9, 12, ..., 999

1부터 1,000까지의 수 중 3으로 나누었을 때 나누어 떨어지는 경우, 즉 3으로 나누었을 때 나머지가 0인 경우가 바로 3의 배수이다. 따라서 다음과 같이 % 연산자를 사용하면 3의 배수를 쉽게 찾을 수 있다.

## 3의 배수 구하기
for n in range(1, 1000):
    if n % 3 == 0:
    print(n)
 

5의 배수 역시 위와 같은 방법(n%5)으로 구할 수 있다.

 

 

3. 이러한 내용을 바탕으로 최종 풀이는 다음과 같다.

## 3의 배수와 5의 배수 더하기
result = 0
for n in range(1, 1000):
    if n % 3 == 0 or n % 5 == 0:
        result += n
print(result)
→ 233168
 

이 문제에서 유의할 점은 3과 5의 공배수인 15의 배수를 이중으로 더해서는 안 된다는 점이다.

따라서 공배수 값이 이중으로 더해지지 않기 위해 or 연산자를 사용하였다.

 

다음 예제는 15와 같은 수를 이중으로 더하여 잘못된 결과를 출력하는 잘못된 풀이이다.

## 3의 배수와 5의 배수 더하기(잘못된 풀이)
result = 0
for n in range(1, 1000):
    if n % 3 == 0:
        result += n
    if n % 5 == 0:
        result += n
print(result)
→ 266333
 

 

 

 

 

 

 

TEL (062-226-1777, 010-9891-7244), E-mail (ipmes@ipmes.co.kr)

임베디드 시스템 | PCB 설계 제작 | 펌웨어 개발 | 신호처리 | 응용프로그램

 

 

 

'연구노트 > Python' 카테고리의 다른 글

파이썬 프로그래밍 기초(3)  (0) 2025.04.30
파이썬 프로그래밍 기초(2)  (0) 2025.04.30
파이썬 라이브러리  (2) 2025.04.30
파이썬 내장 함수  (0) 2025.04.30
Python 예외 처리  (0) 2025.04.30