가령 구구단 프로그램 중 2단을 만든다면 2를 입력값으로 주었을 때 어떻게 출력되어야 할지 생각해 보라고 했다. 그래도 그림이 그려지지 않는 것 같아 직접 연습장에 적어 가며 설명해 주었다.
#함수 이름은? GuGu
#입력받는 값은? 2
#출력하는 값은? 2단(2, 4, 6, 8, …, 18)
#결과는 어떤 형태로 저장하지? 연속된 자료형이니까 리스트!
#return 이란
return이 함수에서 값을 최종적으로 돌려주는 것입니다. 이전 강의의 책에서 나온 예시로 말씀드리면 믹서기에서 과일을 갈고 "과일 주스를 내보내는 과정"입니다!
def GuGu(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(GuGu(2))
이 반복된 것을 반복문으로 바꿔준다
def GuGu(n):
result = []
i = 1
while i < 10:
result.append(n*i)
i = i + 1
return result
print(GuGu(2))
여기서 n*i 를 안하고 1을 넣어서 작동이 안되었다.
10 미만의 자연수에서 3과 5의 배수를 구하면 3, 5, 6, 9이다. 이들의 총합은 23이다.
1000 미만의 자연수에서 3의 배수와 5의 배수의 총합을 구하라.
#입력 받는 값은? 1부터 999까지(1000 미만의 자연수)
#출력하는 값은? 3의 배수와 5의 배수의 총합
#생각해 볼 것은?
3의 배수와 5의 배수는 어떻게 찾지?
3의 배수와 5의 배수가 겹칠 때는 어떻게 하지?
#3의 배수 구하기. %가 나누기
for n in range(1,1000):
if n % 3 == 0:
print(n)
#결과를 다 더해서 출력해주려면
result = 0 을 써야한다
result = 0
for n in range(1,1000):
if n % 3 == 0 or n % 5 ==0:
result += n
print(result)
이러면 답이 나온다 223168
A 씨는 게시판 프로그램을 작성하고 있다. 그런데 게시물의 총 건수와 한 페이지에 보여 줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램이 필요하다고 한다.
※ 구글 검색 했을 때, 맨 밑의 게시판의 페이지 수를 보여 주는 것을 "페이징"한다고 부른다.
#함수 이름은? getTotalPage
#입력 받는 값은? 게시물의 총 건수(m), 한 페이지에 보여줄 게시물 수(n)
#출력하는 값은? 총 페이지수
게시물의 총 건수(m) 페이지당 보여줄 게시물 수(n) 총 페이지 수
5 10 1
15 10 2
25 10 3
30 10 3
#m을 n으로 나눌 때 소수점 아래 자리를 버리기 위해 / 대신 // 연산자를 사용
#나누기로 생각 = > 총 페이지 수 = (총 건수 / 한 페이지당 보여 줄 건수) + 1
5 / 10 + 1 이런식. 맞아 떨어진다면.. 그러면 if else를 써야한다
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))
원하는 메모를 파일에 저장하고 추가 및 조회가 가능한 간단한 메모장을 만들어 보자.
필요한 기능은? 메모 추가하기, 메모 조회하기
입력 받는 값은? 메모 내용, 프로그램 실행 옵션
출력하는 값은? memo.txt
python memo.py -a "Life is too short"
sys.argv는 프로그램을 실행할 때 입력된 값을 읽어 들일 수 있는 파이썬 라이브러리이다. sys.argv[0]는 입력받은 값 중에서 파이썬 프로그램 이름인 memo.py이므로 우리가 만들려는 기능에는 필요 없는 값이다. 그리고 순서대로 sys.argv[1]은 프로그램 실행 옵션 값이 되고 sys.argv[2]는 메모 내용이 된다.
import sys
option = sys.argv[1]
memo = sys.argv[2]
print(option)
print(memo)
https://wikidocs.net/36
여기는 이해가 잘 안된다.
이번에는 문서 파일을 읽어서 그 문서 파일 안에 있는 탭(tab)을 공백(space) 4개로 바꾸어 주는 스크립트를 작성해 보자.
필요한 기능은? 문서 파일 읽어 들이기, 문자열 변경하기
입력 받는 값은? 탭을 포함한 문서 파일
출력하는 값은? 탭이 공백으로 수정된 문서 파일
sys.argv는 터미널에서 실행할 때 입력한 인자들입니다.
이 영상에서는 python tabto4.py a.txt b.txt 로 입력이 되었는데 이 경우
sys.argv는 ['tabto4.py', 'a.txt', 'b.txt']가 됩니다.
특정 디렉터리부터 시작해서 그 하위 모든 파일 중 파이썬 파일(*.py)만 출력해 주는 프로그램을 만들려면 어떻게 해야 할까?
모든 하위 폴더
import os
def search(dirname):
filenames = os.listdir(dirname)
for filename in filenames:
full_filename = os.path.join(dirname, filename)
print(full_filename)
search("c:/")
os.listdir를 사용하면 해당 디렉터리에 있는 파일들의 리스트를 구할 수 있다. 여기에서 구하는 파일 리스트는 파일 이름만 포함되어 있으므로 경로를 포함한 파일 이름을 구하기 위해서는 입력으로 받은 dirname을 앞에 덧붙여 주어야 한다. os 모듈에는 디렉터리와 파일 이름을 이어 주는 os.path.join 함수가 있으므로 이 함수를 사용하면 디렉터리를 포함한 전체 경로를 쉽게 구할 수 있다.
파일 이름에서 확장자만 추출하기 위해 os 모듈의 os.path.splitext 함수를 사용하였다. os.path.splitext는 파일 이름을 확장자를 기준으로 두 부분으로 나누어 준다. 따라서 os.path.splitext(full_filename)[-1]은 해당 파일의 확장자 이름이 된다. 위 코드는 확장자 이름이 .py인 경우만을 출력하도록 작성했다. C:/디렉터리에 파이썬 파일이 없다면 아무것도 출력되지 않을 것이다.