파일을 다루는 기본적인 요소들을 정리해보았다.

1. 파일 작업 단계

f = open("test.txt", "r")             //파일 열기

s = f.read()                                   //읽기 또는 쓰기

f.close()                                       //파일 닫기

 

 

2. 텍스트 파일 읽고 쓰기

 

open()함수

 

"r" : 읽기

"w" : 쓰기

"a" : 추가

"r+" : 읽기로 열어 쓰기까지 가능

"w+" : 쓰기로 열어 읽기까지 가능

 

'b' : 바이너리 모드

't' : 텍스트 모드(파일 내용을 str로 반환)

'+' : 업데이트 용으로 열기

 

open() 후 파일 읽고 쓰기 메소드

 

읽기

read() : 파일 내용을 모두 읽어서 문자열로 반환

read(n) : 파일에서 n 바이트 읽어서 문자열로 반환

 

readline() : 한 줄씩 읽어서 문자열로 반환

 

readlines() : 파일 전체를 리스트로 반환

 

쓰기

write() : 문자열을 파일에 저장

writelines() : 문자열 리스트를 파일에 저장

 

3. 줄바꿈 기호 삭제하기

str.strip() : 양쪽 공백과 개행문자 제거

str.lstrip() : 왼쪽 공백과 개행문자 제거

str.rstrip() : 오른쪽 공백과 개행문자 제거

 

예시

>>> s = '       Hello       '
>>> s.strip()
'Hello'
>>> s.lstrip()
'Hello       '
>>> s.lstrip()
'       Hello'

 

 

4. 파일에서 단어 읽기

str.split() : 공백 문자를 이용하여 문자열에서 단어를 분리

 

5. with 문을 이용한 파일 열고 닫기(파일을 닫는 가장 좋은 방법)

with 문 내부의 블록이 종료될 때 파일 닫힘 -> close()를 명시적으로 호출할 필요 없음

 

다음에는 python에서 복사에 대해 정리해보겠다

 

'프로그래밍 언어 > python' 카테고리의 다른 글

[프로그래머스] 카펫  (0) 2021.01.20
파이썬을 배워야 하는 이유  (0) 2021.01.10

문제 설명

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
  • 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
  • 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.

문제 풀이

import math

def solution(brown, yellow):
    answer = []
    
    # 모든 타일의 수 = 넓이
    tiles = brown + yellow
    temp = []
    # 모든 가로, 세로 값의 경우의 수를 구함
    for i in range(3, int(math.sqrt(tiles)) + 1):
        if tiles % i == 0:
            if i > tiles / i:
                temp.append([i, int(tiles / i)])
            else:
                temp.append([int(tiles / i), i])
    # 정답의 타일과 일치할 때를 찾아냄
    for w, h in temp:
        if w * 2 + (h - 2) * 2 == brown:
            answer = [w, h]
            break
    
    return answer

여기서 모든 타일의 수는 카펫의 넓이와 같다. 카펫은 직사각형이기 때문에 가로 x 세로로 넓이가 결정된다. 갈색 타일의 경우 테두리를 둘러 싸고 있는데 타일의 수가 (가로) * 2 + (세로 - 1) * 2이다. 따라서 이 풀이에서는

1. 리스트 temp에 총 가능한 (가로 길이, 세로 길이) 쌍을 집어넣는다. (나머지 연산을 통해 나머지가 0이 나올 경우, 큰 쪽을 가로, 작은 쪽을 세로로 만들어 집어넣어주었다.)

2. temp에 들어있는 것 중 brown(갈색 타일의 수)와 (가로) * 2 + (세로 - 1) * 2를 비교해 같은 것을 반환한다.

라는 방법으로 풀었다.

문제 링크

programmers.co.kr/learn/courses/30/lessons/42842

'프로그래밍 언어 > python' 카테고리의 다른 글

Python(1) - 파일  (0) 2021.02.03
파이썬을 배워야 하는 이유  (0) 2021.01.10

 

1. 용이성

  • 문법이 쉽고 간결해서 배우고 사용하기 쉽다.
  • 코딩 자체로는 쉽지 않지만 파이썬은 다른 언어들보다는 비교적 쉽다.
  • 범용 프로그래밍 언어이기 때문에 데이터 분석, 게임 개발, 보안 등 여러 곳에서 사용이 가능하다.

 

  • 자바 Life is Short!를 분리하고 출력하는 코드
public static void main(String[] args) {
    String msg = "Life is Short!";
        for(String m : msg.split(" "))
            System.out.println(m);
}

 

  • 파이썬으로 Life is Short!를 분리하고 출력하는 코드
msg = 'Life is Short!'
print(msg.split())

위와 같이 같은 기능을 각 언어로 했을 때 파이썬이 자바보다 간결하다.

 

2. 방대성

  • 파이썬을 사용하는 사람이 아주 많기 때문에 참고할 자료가 많다.
  • 우리나라를 포함하여 세계적으로 파이썬을 입문용 언어로 많이 사용하고 있는 추세다.
  • 파이썬은 제공하고 있는 라이브러리들이 많다.

 

 

 

 

 

 

3. 속결성

  • 빠른 개발이 가능하다.
  • 배우는데 걸리는 시간도 다른 언어에 비해 비교적 적게 든다.
  • 위에서 이야기 했듯이 제공하는 라이브러리들이 많아서 구현할 필요 없이 바로 가져다 쓸 수 있다.
  • 파이썬은 최대한 문법 구조를 단순화시키고 간결하게 만드는 것을 기본으로 하기 때문에 복잡한 코딩이 필요없다.

'프로그래밍 언어 > python' 카테고리의 다른 글

Python(1) - 파일  (0) 2021.02.03
[프로그래머스] 카펫  (0) 2021.01.20

+ Recent posts