본문 바로가기

Python

(74)
[Python] 파일 입출력 간단하게 하기 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다. 보통 'myfile.txt'라는 이름의 파일을 읽는 코드를 짤 때 다음과 같이 EOF를 만날 때까지 파일 읽기를 반복한다. f = open('myfile.txt', 'r') while True: line = f.readline() if not line: break raw = line.split() print(raw) f.close() 파이썬의 with - as 구문을 이용하면 코드를 더 간결하게 짤 수 있다. with open('myfile.txt') as file: for line in file.readlines(): print(line.strip().split('\t')) 코드를 위와 같이 쓰면 다음과 같은 장점이 있다 파..
[Python] 가장 큰 수, inf 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다. 코딩 테스트 문제등을 풀다 보면, 최솟값을 저장하는 변수에 아주 큰 값을 할당해야 할 때가 있다. 이때에 사용하기 좋은 것이 inf이다. 이 기능을 몰르는 사람들은(필자 포함) 다음과 같이 본인이 생각하는 임의의 큰수(99999등)을 할당한다. min_val = 99999 min_val > 100000000 # ? 위 방법은 비교할 데이터가 아주 큰 경우, 정상적으로 작동하지 않을 수 있다. (2번째 줄처럼) 파이썬이 제공하는 inf는 어떤 숫자와 비교해도 무조건 크다고 판정된다. min_val = float('inf') min_val > 10000000000 inf에는 음수 기호를 붙이는 것도 가능하다. max_val = f..
[Python] 두 변수의 값 바꾸기 - swap 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다. 보통 두 변수의 값을 바꿀 때 다음과 같이 값을 임시로 저장할 변수, temp를 이용해 두값 을 바꾼다. a = 3 b = 'abc' temp = a a = b b = temp 파이썬에서는 다음과 같이 한 줄로 두 값을 바꿔치기할 수 있다. a = 3 b = 'abc' a, b = b, a # 참 쉽죠?
[Python] flag OR for-else 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다. 자연수 5개를 받은 뒤 숫자를 차례로 곱해 나온 수가 제곱수가 되면 found를 출력하고 모든 수를 곱해도 제곱수가 나오지 않았따면 not found를 출력하는 코드이다. (곱해 나온 수의 제곱근이 정수이면 제곱수이다.) import math numbers = [int(input()) for _ in range(5)] multiplied = 1 flag = True for number in numbers: multiplied *= number if math.sqrt(multiplied) == int(math.sqrt(multiplied)): flag = False print('found') break if flag: print..
[Python] 2차원 리스트를 1차원 리스트로 만들기 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다. 코딩을 하다보면, 이차원 리스트를 일차원 리스트로 만들어야 할 때가 있다. 보통 다음과 같이 반복문을 이용해 리스트를 더해간다. my_list = [[1, 2], [3, 4], [5, 6]] answer = [] for i in my_list: answer += i print(answer) # [1, 2, 3, 4, 5, 6] 파이썬의 다양한 기능을 사용하면, for문을 사용하지 않고도 리스트를 이어붙일 수 있다. 1. sum 함수 answer = sum(my_list, []) 2. itertools.chain import itertools list(itertools.chain.from_iterable(my_list)) 3. ..
[Python] sequence type의 *연산 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다. 곱셉연산*를 통해 문자열을 반복할 수 있다. 예시1 'abc', 'abcabc', 'abcabcabc', 'abcabcabcabc ...' 과 같이 'abc'가 n번 반복되는 문자열 만들기 n = 어쩌고 answer = 'abc'*n 예시2 [123, 456, 123, 456, 123 ...] 과같이 123, 456이 n번 반복되는 리스트를 만들기 n = 어쩌고 answer= [123, 456]*n
[Python] 알파벳 출력하기 - string 모듈 a부터 z까지의 소문자를 가져오라고 하면 보통 'abcdefg ...."와 같이 손수 알파벳을 입력한다. 파이썬에서는 이런 데이터를 상수(constants)로 정의해놓았다. import string string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ string.ascii_letters #대소문자 모두 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ string.digits # 숫자 0123456789 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다.
[Python] [Str 다루기] 문자열 정렬하기 - ljust, center, rjust 이 글은 프로그래머스의 파이썬을 파이썬답게 강의를 수강하고 작성하는 글입니다. 문자열을 좌측/가운데/우축 정렬할 때 보통 for문을 이용해 기존 string에 공백문자(' ')를 여러 번 붙이는 번거로운 일을 다음과 같이 한다. ### 우측 정렬 예 s = '가나다라' n = 7 answer = '' for i in range(n-len(s)): # 문자열의 앞을 빈 문자열로 채우는 for 문 answer += ' ' answer += s 하지만 파이썬에서는 ljust, center, rjust와 같은 string의 메소드를 사용해 코드를 획기적으로 줄일 수 있다. s = '가나다라' n = 7 s.ljust(n) # 좌측 정렬 s.center(n) # 가운데 정렬 s.rjust(n) # 우측 정렬