Language/Python [Python] 프로그래밍
  • 728x90
    반응형

     

     

     

    3과 5의 배수 합하기

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

    1000 미만의 자연수에서 3의 배수와 5의 배수의 총합을 구하라.

     

    • 입력받는 값은? 1부터 999 까지(1000미만의 자연수)
    • 출력하는 값은? 3의 배수와 5의 배수의 총합
    • 생각해 볼 것은?
      1. 3의 배수와 5의 배수는 어떻게 찾지?
      2. 3의 배수와 5의 배수가 겹칠 때는 어떻게 하지?

     

     

    결과 :

     

    위 문제는 코딩 연습을 할 수 있는 사이트 "프로젝트 오일러" 사이트의 첫 번째 문제이다.

     

    프로젝트 오일러 : http://projecteuler.net/archives

     

     

     

     

    게시판 페이징 하기

    📌 A씨는 게시판 프로그램을 작성하고 있다. 그런데 게시물의 총 건수와 한 페이지에 보여줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램이 필요하다고 한다.

     

    💡 이렇게 게시판의 페이지수를 보여주는 것을 "페이징" 한다고 부른다.

    • 함수 이름은? geTotalPage
    • 입력 받는 값은? 게시물의 총 건수(m), 한 페이지에 보여줄 게시물의 수(n)
    • 출력하는 값은? 총 페이지 수
    게시물의 총 건수(m) 페이지당 보여줄 게시물 수(n) 총 페이지 수
    5 10 1
    15 10 2
    25 10 3
    30 10 3

     

     

    결과 :

     

     

     

    간단한 메모장 만들기

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

    • 필요한 기능은? 메모 추가하기, 메모 조회하기
    • 입력 받는 값은? 메모 내용, 프로그램 실행 옵션
    • 출력하는 값은? memo.txt

     

    다음과 같은 명령을 실행했을 때 메모를 추가할 수 있도록 만든다.

    py memo.py -a "Life is too short"

     

    메모 출력은 다음과 같이 동작하도록 만든다.

    py memo.py -v

     

     

    결과 :

     

     

     

    탭을 4개의 공백으로 바꾸기

    📌 문서 파일을 읽어서 그 문서 파일 내에 있는 탭(tab)을 공백 (space) 4개로 바꾸어주는 스크립트를 제작.

    • 필요한 기능은? 문서 파일 읽어 들이기, 문자열 변경하기
    • 입력 받는 값은? 탭을 포함한 문서 파일
    • 출력하는 값은? 탭이 공백으로 수정된 문서 파일

     

    다음과 같은 형식으로 프로그램 수행

    py tabto4.py a.txt b.txt

     

     

    결과 :

     

     

     

     

     

    하위 디렉터리 검색하기

    📌 특정 디렉터리부터 시작해서 그 하위의 모든 파일 중 파이썬 파일(*.py)만 출력해 주는 프로그램을 제작한다.

    💡 sub_dir_search.py는 d:\Python 디렉터리에 저장한다.

     

    • search 라는 함수를 만들고 시작 디렉터리를 입력 받도록 작성한다.

     

    프로그램 설명 :

    os.listdir을 이용하면 해당 디렉터리에 있는 파일들의 리스트를 구할 수 있다. 여기서 구해지는 파일 리스트는 파일명만 포함되어 있으므로 경로를 포함한 파일명을 구하기 위해서는 입력으로 받은 dirname을 덧붙여 주어여 한다. os 모듈에는 디렉터리와 파일명을 이어주는 os.path.join이라는 함수를 이용하면 디렉터리를 포함한 전체 경로를 쉽게 구할 수 있다.

     

    파일명에서 확장자만 추출하기 위해 os 모듈의 os.path.splitext 함수를 사용한다. 이 함수는 파일명을 확장자를 기준으로 두부분으로 나누어 준다.

     

    try ...except PermissionError로 함수를 구성한 이유는 os.listdir 수행 시 권한이 없는 디렉터리에 접근하더라도 프로그램이 오류로 종료되지 않고 그냥 수행되도록 하기 위해서이다.

     

    full_filename이 디렉터리인지 파일인지 구분하기 위하여 os.path.isdir 함수를 이용하였고 디렉터리일 경우 해당 경로를 입력으로 받아 다시 search 함수를 호출하도록 하였다. 

    💡 재귀 호출이란 자기 자신을 다시 호출하는 프로그래밍 기법이다.

     

    결과 :

     

    🎯 하위 디렉터리 검색을 쉽게 해주는 os.walk

    os.walk를 이용하면 위에서 작성한 코드를 보다 간편하게 만들 수 있다. os.walk는 시작 디렉터리부터 시작하여 그 하위의 모든 디렉터리를 차례대로 방문하게 해주는 함수이다.

     

     

     

    728x90
    반응형

    'Language > Python' 카테고리의 다른 글

    Python 정규 표현식 시작하기  (0) 2017.07.24
    Python 정규 표현식 살펴보기  (0) 2017.07.24
    [Python] 외장함수  (0) 2017.07.21
    [Python] 내장 함수  (0) 2017.07.19
    [Python] 예외 처리  (0) 2017.07.18
상단으로