본문 바로가기

연구노트/Python

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

 

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

 

 

게시판 페이징하기

게시물의 총 개수와 한 페이지에 보여줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램이 필요한 상황

함수 이름은? get_total_page

입력받는 값은? 게시물의 총 개수(m), 한 페이지에 보여줄 게시물 수(n)

출력하는 값은? 총 페이지 수

 

필요한 프로그램을 만들기 위해 입력값과 결괏값이 어떻게 나와야 하는지 먼저 살펴보자.

게시물의 총 개수가 5이고 한 페이지에서 보여줄 게시물 수가 10이면 총 페이지 수는 당연히 1이 된다.

만약 게시물의 총 개수가 15이고 한 페이지에서 보여줄 게시물 수가 10이라면 총 페이지 수는 2가 될 것이다.

 
게시물의 총 개수(m)
페이지당 보여줄 게시물 수(n)
총 페이지 수
5
10
1
15
10
2
25
10
3
30
10
3

 

이 문제는 게시판 프로그램을 만들 때 가장 처음 마주치는 난관이라고 할 수 있는 총 페이지 수를 구하는 문제이다.

실제 업무에서 사용하는 페이징 기술은 훨씬 복잡한데 여기에서는 간단한 총 페이지 수를 구하는 방법에 대해서만 알아본다.

 

 

1. 다음과 같이 총 게시물 개수(m)를 한 페이지에 보여줄 게시물 수(n)로 나누고 1을 더하면 총 페이지 수를 얻을 수 있다.

## 페이지 수 구하기
총 페이지 수 = (총 게시물 개수 / 한 페이지당 보여줄 개수) + 1
 

2. 이러한 공식을 적용했을 경우 총 페이지 수가 표의 값처럼 구해지는지 확인해보자.

## 페이지 수 구하기 함수1
def getTotalPage(m, n):
    return m // n + 1

print(getTotalPage(5, 10))
print(getTotalPage(15, 10))
print(getTotalPage(25, 10))
print(getTotalPage(30, 10))
→ 1
→ 2
→ 3
→ 4
 

이렇게 코드를 작성하면 세 번째 줄까지는 정상적인 결과가 나오지만 네 번째 줄의 결과는 4가 나온다.

이를 수정하여 우리가 원하는 3이라는 숫자를 출력하도록 만들어보자.

 

3. 실패 케이스는 총 게시물 수와 한 페이지에 보여줄 게시물 수를 나눈 나머지 값이 0이 될 때 발생함을 유추할 수 있다.

이 실패 케이스를 해결하려면 다음과 같이 코드를 변경해야 한다.

## 페이지 수 구하기 함수2
def getTotalPage(m, n):
    if m % n == 0:
        return m // n
    else:
        return m // n + 1

print(getTotalPage(5, 10))
print(getTotalPage(15, 10))
print(getTotalPage(25, 10))
print(getTotalPage(30, 10))
→ 1
→ 2
→ 3
→ 3
 

나누었을 때 나머지가 0인 경우는 나누기의 몫만 돌려주고 그 이외의 경우에는 1을 더하여 돌려주도록 수정했다.

이렇게 수정하면 우리가 원하는 결과를 출력하는 것을 확인할 수 있다.

 

간단한 메모장 만들기

 

원하는 메모를 파일에 저장하고 추가 및 조회할 수 있는 간단한 메모장을 만들어보자.

필요한 기능은? 메모 추가하기, 메모 조회하기

입력받는 값은? 메모 내용, 프로그램 실행 옵션

출력하는 값은? memo.txt

 

가장 먼저 해야 할 일은 메모를 추가하는 것이다. 다음 명령을 실행했을 때 메모를 추가할 수 있도록 만들어보자.

## 명령 실행 시 메모 추가
python memo.py -a "Life is too short"
 

memo.py는 우리가 작성할 파이썬 프로그램 이름이다.

–a는 이 프로그램의 실행 옵션이고 "Life is too short"는 추가할 메모 내용이 된다.

 

1. 먼저 다음과 같이 입력으로 받은 옵션과 메모를 출력하는 코드를 에디터로 작성해 보자.

## 메모 출력
# C:/ipmer/memo.py
import sys

option = sys.argv[1]
memo = sys.argv[2]

print(option)
print(memo)
 

sys.argv는 프로그램을 실행할 때 입력된 값을 읽어 들일 수 있는 파이썬 라이브러리이다.

sys.argv[0]은 입력받은 값 중에서 파이썬 프로그램 이름인 memo.py이므로 우리가 만들려는 기능에는 필요 없는 값이다.

그리고 순서대로 sys.argv[1]은 프로그램 실행 옵션이 되고 sys.argv[2]는 메모 내용이 된다.

 

2. memo.py는 c:\ipmes1 디렉터리에 저장한다.

입력으로 전달한 옵션과 메모 내용이 그대로 출력되는 것을 확인할 수 있다.

## 디렉터리에 저장
C:\ipmes1>python memo.py -a "Life is too short"
-a
Life is too short
 

 

3. 이제 입력으로 받은 메모를 파일에 쓰도록 코드를 변경해보자.

## 메모를 파일에 쓰기
import sys

option = sys.argv[1]
if option == '-a':
    memo = sys.argv[2]
    f = open('memo.txt', 'a')
    f.write(memo)
    f.write('\n')
    f.close()
 

옵션이 -a인 경우에만 memo 값을 읽어 memo.txt에 그 값을 쓰도록 코드를 작성했다.

여기에서 메모는 항상 새로운 내용이 작성되는 것이 아니라 한 줄씩 추가되어야 하므로 파일 열기 모드를 a로 했다.

그리고 메모를 추가할 때마다 다음 줄에 저장되도록 줄바꿈 문자(\n)도 추가로 파일에 쓰게 했다.

 

4. 이제 다음과 같은 명령을 수행해 보자.

## 명령 수행하기
C:\ipmes1>python memo.py -a "Life is too short"  
C:\ipmes1>python memo.py -a "You need python"
 
## 메모 기입되어있는지 확인하기
C:\ipmes1>type memo.txt
Life is too short
You need python
 

추가한 메모가 정상적으로 저장된 것을 볼 수 있다.

 

 

5. 이번에는 작성한 메모를 출력하는 부분을 만들 차례이다. 메모 출력은 다음과 같이 동작하도록 만들어보자.

메모 추가는 –a 옵션을 사용하고 메모 출력은 –v 옵션을 사용한다.

이제 메모 출력을 위해 다음과 같이 코드를 변경해 보자.

## 메모 출력
import sys

option = sys.argv[1]

if option == '-a':
    memo = sys.argv[2]
    f = open('memo.txt', 'a')
    f.write(memo)
    f.write('\n')
    f.close()
elif option == '-v':
    f = option('memo.txt')
    memo = f.read()
    f.close()
    print(memo)
 

 

옵션으로 –v가 들어온 경우 memo.txt를 읽어서

 

6. 코드를 수정한 후 다음과 같은 명령을 수행해 보자.

## 메모 출력 명령 실행
C:\ipmes1>python memo.py -v
→ Life is too short
→ You need python
 

입력한 메모가 그대로 출력되는 것을 확인할 수 있다.

 

 

 

 

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

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

 

 

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

Python 정규 표현식  (0) 2025.05.08
파이썬 프로그래밍 기초(3)  (0) 2025.04.30
파이썬 프로그래밍 기초(1)  (0) 2025.04.30
파이썬 라이브러리  (2) 2025.04.30
파이썬 내장 함수  (0) 2025.04.30