[점프투파이썬] 6장 - 파이썬 프로그래밍, 어떻게 시작해야 할까?

해롱그·2023년 6월 15일
0

파이썬

목록 보기
7/12
post-thumbnail

1. 내가 프로그램을 만들 수 있을까?

프로그램을 만들 때, 가장 먼저 '입력'과 '출력'을 생각하라!

1. 구구단 프로그램(함수) 만들기

n 입력하면 n단 출력

  • 함수 이름은?
    GuGu
  • 입력 받는 값은?
    2
  • 출력하는 값은?
    2, 4, 6, 8,.., 18
  • 결과는 어떤 형태로?
    리스트
# for문
def GuGu(n):
    result = []
    for i in range(1, 10):
        result.append(n*i)
    return result
print(GuGu(2))

>>> [2, 4, 6, 8, 10, 12, 14, 16, 18]

# while문
def GuGu(n):
    result = []
    i = 1
    while i < 10:
        result.append(n*i)
        i += 1
    return result
print(GuGu(2))

>>> [2, 4, 6, 8, 10, 12, 14, 16, 18]

2. 3과 5의 배수 합하기

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

  • 입력 받는 값은?
    1~999(1000 미만의 자연수)
  • 출력하는 값은?
    3의 배수와 5의 배수의 총합
  • 생각해 볼 것은?
    3의 배수와 5의 배수는 어떻게 찾지?
    3의 배수와 5의 배수가 겹칠 때는 어떻게 하지?
sum = 0
for n in range(1, 1000):
    if n % 3 == 0 or n % 5 == 0:
        sum += n
print(sum)

>>> 233168

3. 게시판 페이징하기

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

  • 함수 이름은?
    GetTotalPage
  • 입력 받는 값은?
    게시물의 총 건수(m), 한 페이지에 보여줄 게시물 수(n)
  • 출력하는 값은?
    총 페이지 수
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

4. 간단한 메모장 만들기

원하는 메모를 파일에 저장하고 추가 및 조회가 가능한 간단한 메모장을 만들어보자.
python3 memo.py -a "Life is too short"

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

option = sys.argv[1]    #-a
memo = sys.argv[2]      #"Life is too short"

print(option)
print(memo)

실행 >>> python3 memo.py -a "간단한 메모장 만들기!"
결과값 >>>

# 쓰기모드
import sys

option = sys.argv[1]     #-a

if option == '-a':       #쓰기
    memo = sys.argv[2]   #"간단한 메모장 만들기!"
    f = open('memo.txt', 'a')
    f.write(memo)
    f.write('\n')
    f.close()
    
실행 >>> python3 memo.py -a "간단한 메모장 만들기!"
결과값 >>>

# 읽기모드 추가
import sys

option = sys.argv[1]     #-a

if option == '-a':       #쓰기
    memo = sys.argv[2]   #"간단한 메모장 만들기!"
    f = open('memo.txt', 'a')
    f.write(memo)
    f.write('\n')
    f.close()
elif option == '-v':     #읽기
    f = open('memo.txt')
    memo = f.read()
    f.close()
    print(memo)

실행 >>> python3 memo.py -v
결과값 >>>

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

python3 tabto4.py a.txt b.txt

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

src = sys.argv[1]
dst = sys.argv[2]

print(src)
print(dst)

실행 >>> python3 tabto4.py a.txt b.txt
결과값 >>>

# a.txt = tab으로 적은 파일 / b.txt = tab을 space*4로 변경해준 파일
import sys

src = sys.argv[1]
dst = sys.argv[2]

f = open(src)   #a.txt 오픈
tab_content = f.read()
f.close()

space_content = tab_content.replace("\t", " "*4)   #\t = tab

f = open(dst, 'w')  # tab을 space로 바꾼걸 b.txt 생성해서 저장해주기
f.write(space_content)
f.close()

실행 >>> python3 tabto4.py a.txt b.txt
결과값 >>>

6. 하위 디렉터리 검색하기

특정 디렉터리부터 시작해서 그 하위 모든 파일 중 파이썬 파일(*.py)만 출력해 주는 프로그램을 만들어보자.

# 하위 폴더, 파일 나열
import os   #외장함수

def search(dirname):
    print(os.listdir(dirname))

search("/Users/choihyerin")

>>>	choihyerin 밑에 있는 파일이나 폴더들이 쫘르륵 나열됨!		#파일 하나하나의 이름, 전체 경로 X

# 전체 경로(os.path.join)
import os   #외장함수

def search(dirname):
    filenames = os.listdir(dirname)
    for filename in filenames:
        full_filename = os.path.join(dirname, filename)
        print(full_filename)

search("/Users/choihyerin")

# 파이썬 확장자가 있는 것만 출력(splitext)
import os   #외장함수

def search(dirname):
    try:            #에러 예외처리
        filenames = os.listdir(dirname)
        for filename in filenames:
            full_filename = os.path.join(dirname, filename)
            if os.path.isdir(full_filename):
                search(full_filename)
            else:
                ext = os.path.splitext(full_filename)[-1]
                if ext == ".py":
                    print(full_filename)
    except PermissionError:
        pass

search("/Users/choihyerin")

입력과 출력을 고려해서 원하는 프로그램을 단계적으로 작성해야한다..!


Reference
참고한 영상

profile
사랑아 컴퓨터해 ~

0개의 댓글