-
자, 설 연휴의 첫날이지만 파이썬을 못해 몸이 근질거려
카페에 왔답니다.
드디어...파트 원이 끝나가는구나.. 빨리 파트 2로 가고싶사와요...
자 그럼 스타또
Part1. 딥러닝을 시작하기전에
CH03-11. 파이썬 파일 입출력
&
CH03-12. 함수의 이해와 활용
CH03-11. 파이썬 파일 입출력
자, 텍스트 입출력에 대해선 많이 공부해봤지만 이번엔 파일 입출력이다. 하드에 파일 형태로 저장하고 다시 가져온다는 말
파일을 가져오거나 저장할 때는?
"open() 과 close()를 쓰면 된다"
f = open("example.txt", "w")
f.close()
이 파일 모드에는 총 3가지가 있는데, r: 리드(파일 읽기) / w: 쓰기(파일에 내용 쓰기) / a: 추가(마지막에 새로운 내용 추가)
이렇게 3가지 모드를 제공한다.
여기까지 알았으면 간단하게 코드를 한번 써보자.
f = open("example.txt", "w") ←"w", 즉 쓰기모드로 파일을 만들어 오픈하고,
for line in range(1,6): ← 라인이라는 것에 대해 1부터 5까지 숫자 반복이다.
data = f"{line}번째 줄\n" ← data라는 변수에 {line} 안에 숫자가 1부터 5까지 들어가고,
f.write(data) ← write를 통해 데이터를 쓴다.(여기까지도 for 문 영역이기에 이것도 5번 반복)
f.close() ← 쓰기모드 종료
이렇게 하면 코랩 기준으로 폴더 안에 우리가 만든 example.txt 라는 파일이 생기고 그 안에,
1 1번째 줄
2 2번째 줄
3 3번째 줄
4 4번째 줄
5 5번째 줄
이렇게 표기될 것이다.
자, 그러면 파일을 읽어보도록 하자.
우선 아까 그 폴더에 data.txt 라는 폴더를 하나 만들어보고 시작해보자고.
f = open("data.txt", "r") ← 읽기모드로 파일을 data.txt 파일을 연다.
lines = f.readlines() ← readlines()는 파일의 각 줄을 리스트 원소화 하고, lines는 리스트 형태로 값을
가진다.(각 문장이 원소가 된다는 말)
for i in range(len(lines)): ← len(lines)는 이 리스트의 원소의 개수만큼 길이를 가지고 있고, i는 순회한다.
line = lines[i].strip() ← 이 lines의 i에 따라 line이라는 변수에 원소들을 하나씩 넣고,
print(f"{i}번째 줄의 내용: {line}") ← 그 원소를 출력한다.
f.close()
▶ .strip()을 쓰면 이미 문장 사이를 한줄 띄게 만들어주는 기능이 있는데, 이걸 쓰면 그 지네들 멋대로 한줄 공백을 없애줌

연휴라 랩실을 나가지 않아 노트북입니다. 양해부탁드립니다. 이미지처럼 strip 안쓰면 저렇게 한줄씩 지맘대로 띄어버린다. 자, 이 readlines랑 관련된 걸 좀 알아보자.
조금 더 자세히 살펴보면 이 줄을 읽어들이는 함수로는 총 3개!가 있는데,
앞서 알아본 readlines()와 더불어 readline() 과 read() 이렇게다.
눈치가 빠른 독자라면 이미 눈치를 채셨겠지만,
readlines()는 여러줄을 한꺼번에 가져오는 아이readline()은 한줄씩 가져오는 아이
read()는 줄 그딴거 필요 없다. 그냥 텍스트 통으로 가져오는 아이(파일의 전체 내용을 하나의 문자열로 반환)
readline()함수에 대해 좀 더 알아보자.
f = open("data.txt", "r")
while True :
line = f.readline()
if not line:
break
else :
print(line.strip())
f.close
자, read 함수도 한번 알아보자.
f = open("data.txt", "r")
data = f.read()
print(data)
f.close
초간단.
자 근데 뭔가 이상한게 하나 있지 않은가?.... 저 f.close를 귀찮게 시리 언제 맨날 열고 닫고 하겠느냐... 자!
그래서 또 새로운 좋은 기능이 있으니 바로 f를 이용하면 된다는 거시다.
flle_name = "output.txt"
with open(file_name, "w") as f:
f.write("Hello world")
CH03-12. 함수의 이해와 활용
음... 함수를 만드는 강의 순선데 강의가 4분밖에 안되서 읭? 했다. 왜냐면 처음 함수 만드는 것 중 매개변수에 대한 개념이
나는 예전에 무척 어려웠었는데...이걸 별도 설명없이 그냥 쑤욱 지나가셔서 자, 내가 이해하는 대로 찬찬히 한번
다시 개념을 짚어보고자 한다.
함수란?
"내가 직접 만드는 커마 f(x)다."
에에에에에? 여태 니가 만든건 하나도 없고, 다 이미 만들어 진거 가져다 썼잖아!
네, 맞는 말씀이십니다만, 내가 그렇게 함수를 따로 만들어 줄 수 도 있다는 말입니다.
우선 함수를 만드는 방법은(내가 이해한 바에 따르면)
1. def 로 묶어주고 그 아랫 줄(들여쓰기를 해서)들에 함수가 구현할 내용들을 넣는다.
2. 이 def 로 묶어줄 때 이 함수를 대표하는 함수명을 적는데 이 함수명 뒤에 ()를 넣어서 함수라는 것임을 명시하는 동시에
3. 이 ()안에는 매개변수를 받는다. 자, 매개변수 어렵지 않다.
함수라 함은, 우리가 알고 있듯이 변수, 즉 변하는 값들이 들어가서 매번 들어가는 변수에 대해 논리적으로 계산을 해서
내뱉어주는 상자로 이해하면 된다. 근데 이 들어가는 변수들에 대해 한정짓지 않으면 엄청 머리가 아파질 것이다.
(혹시나,,,,우리 어릴때 보면 유아용품 장난감 중 별 모양, 동그라미 모양, 삼각형 모양 등 이런 홈이 파인 박스 안에
각자 홈에 맞는 플라스틱 장난감들을 집어 넣었던 것이 있었는데...아마 아실려나 다들...)
무튼 그런 개념이다.
백문이 불여일견. 함 보자.
def add(a, b, c): ← a, b, c 라는 매개변수(즉, 삼각형, 사각형, 오각형 홈이 뚫린 박스를 만들었습니다.)
result = a+b+c ← 이 박스는 삼각형, 사각형, 오각형 홈을 통해 들어온 플라스틱 장난감을 하나로 합쳐줍니다.
return result ← 그 우리 고등학생 때 함수를 배우면서 함수를 y값으로 뽑아냈었는데 그 아래로 나가는 박스 출구
print(add(3, 5, 7) ← 그래서 이 박스 홈에 3, 5, 7 값을 넣으면 무엇이 될까요?
음... 한번 더 해보자
이번엔 좀 많이 어렵다.
리스트 내에서 가장 큰 값의 인덱스(순번)을 내보내는 박스를 만들어보아라.
자, 함수를 무작정 적기 전에 한번 생각해보자고.
일단, 이 함수, 즉 박스의 홈은 어떤 모양일까? 리스트를 받아서 숫자를 내보내야 하니까 받는 홈은 리스트의 형태 배열일 것이다. 그러므로 함수 명을 적고, 그 뒤에 홈을 파줄 땐(arr)을 넣어주면 되겠지.
그다음에, 가장 큰 값을 찾을려고 한다면 한번씩 돌면서 누가누가 가장 큰지 천하제일 숫자대회를 해야하고
이땐 모두 순회한다는 의미로 for를 써야한다. 한번 적어 보자.
def find_max_index(arr):
max_index = 0
for i in range(len(arr)):
if arr[max_index] < arr[i] :
max_index = i
return max_index
data = [7,1,5,6,2,4,7,9,10]
max_index = find_max_index(data)
print(max_index)

답은 3이다. 9일차 끝.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글