728x90
반응형
콘솔로 입출력 하기
1. 내장 함수 사용
○ 입력 : input()
input()
동작 : 콘솔 입력 → (Enter) → str변환 → '\n'(개행)제거 → 반환
input("문구")
동작 : "문구"출력 → 콘솔 입력 → (Enter) → str변환 → 개행('\n')제거 → 반환
○ 사용 예시
a = input("입력해주세요 :")
입력해주세요 :
(사용자 입력받음) Enter
○ 출력 : print(*value, end='\n', sep=' ')
print(*value, end='\n', sep=' ')
- *value : 가변 입력 (콤마로 구분된 여러 입력 받을 수 있음)
- end : 줄바꿈 문자 (기본은 개행)
- sep : 구분자 (기본은 공백)
동작 : 값sep값sep값end 순서로 출력
즉, 콤마로 구분된 여러 값들의 사이에 sep(구분자)를 넣고, 출력 마지막에 end를 넣음
print(값)
동작 : 값end 순서로 출력 → sep, end는 명시안하면 기본값으로 들어감
출력 : 값'\n'
print(값1, 값2)
동작 : 값1sep값2end 순서로 출력
출력 : 값1 값2'\n'
○ 사용 예시
print(1) : 1'\n'
print(1, 2) : 1 2'\n': 콤마마다 공백하나가 딸려옴
print(1, 2, end=' ') : 1 2
print(1, 2, sep=';') : 1;2 : 콤마대신 ;를 쓰겠다
print('cat=', 1) : cat=1
이차원 리스트 이쁘게 출력
board =
[[0, 3, 5, 4, 6, 9, 2, 7, 8],
[7, 8, 2, 1, 0, 5, 6, 0, 9],
[0, 6, 0, 2, 7, 8, 1, 3, 5],
[3, 2, 1, 0, 4, 6, 8, 9, 7],
[8, 0, 4, 9, 1, 3, 5, 0, 6],
[5, 9, 6, 8, 2, 0, 4, 1, 3],
[9, 1, 7, 6, 5, 2, 0, 8, 0],
[6, 0, 3, 7, 0, 1, 9, 5, 2],
[2, 5, 8, 3, 9, 4, 7, 6, 0]]
for i in board:
print(*i)
0 3 5 4 6 9 2 7 8
7 8 2 1 0 5 6 0 9
0 6 0 2 7 8 1 3 5
3 2 1 0 4 6 8 9 7
8 0 4 9 1 3 5 0 6
5 9 6 8 2 0 4 1 3
9 1 7 6 5 2 0 8 0
6 0 3 7 0 1 9 5 2
2 5 8 3 9 4 7 6 0
2. sys 라이브러리
○ 입력 : sys.stdin
○ 출력 : sys.stdout
import sys
sys.stdin.read()
동작 : 입력 후 (Ctrl+Z) → str변환 → 반환 # Ctrl+Z는 window
a = sys.stdin.readline()
동작 : 입력 후 Enter → str변환 → 반환
a.split(구분자)
동작 : str을 구분자로 분리하여 리스트로 변환 → 반환
(default = ' ')
a.rstrip('\n')
동작 : str의 우측 개행('\n') 제거 → 반환
sys.stdin.readlines()
동작 : 입력 후 (Ctrl+Z) → 줄 단위로 str변환 후 list 요소로 들어감 → 반환
# Ctrl+Z는 window
sys.stdout.write(str변수)
동작 : str변수 받아서 출력 (print처럼 개행 안붙음)
○ 사용 예시
sys.stdin.readline()
동작 : 입력 후 Enter → str변환 → 반환
입력 : 1
반환 : '1\n' (Enter='\n' 개행까지 포함되어 저장됨)
sys.stdin.readline().rstrip()
동작 : 입력 후 Enter → str변환 → 우측개행 제거 → 반환
입력 : 1
반환 : '1' (개행이 제거됨)
sys.stdin.readline().split()
동작 : 입력 후 Enter → str변환 → 공백단위로 잘라서 list변환 → 반환
입력 : 1 2 3 4 5
반환 : ['1','2','3','4','5']
map(int, sys.stdin.readline().split())
동작 : 입력 후 Enter → str변환 → 공백단위로 잘라서 list변환 → list의 각 요소를 int로 변환 → 반환
입력 : 1 2 3 4 5
반환 : [1,2,3,4,5]
n = int(sys.stdin.readline())
a = [int(sys.stdin.readline()) for i in range(n)]
동작 : 첫째 줄에 n 입력, 둘째 줄 부터 정수 n번 입력받아서 리스트로 반환
입력 : 2
10
20
반환 : [10,20]
2차원 list 입력받기 (바둑판 모양)
n = int(sys.stdin.readline())
board = [list(map(int,sys.stdin.readline().split())) for i in range(n)]
입력 : 3
1 2 3
4 5 6
7 8 9
반환 :
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
2차원 list 생성 (3x3)
board = [[0] * 3 for i in range(3)]
반환 :
[[0, 0],
[0, 0]]
3. 입출력 속도 차이 비교
○ 입력 속도 비교
○ 출력 속도 비교
데이터가 많을 수록 입출력 속도 차이가 심하게 난다.
sys.stdin.readline() > input()
4. 더 이상 읽을 게 없다면??
- (Python) input()은 EOFError를 발생시킵니다.
while True: try: print(input()) except EOFError: break
- (Python) sys.stdin.readline()은 빈 문자열을 반환합니다.
1) 아래와 같이 풀면 빈줄이 주어지는 경우 처리못함. (그대로 출력하기 1번 문제는 풀 수 있다)
아래와 같이 받으면 빈줄이 주어지는 경우도 처리가능 (그대로 출력하기 1,2 모두 풀이 가능)import sys while True: s = sys.stdin.readline().rstrip() if s: print(s) else: break
import sys for s in sys.stdin: print(s, end='')
입력에 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 있을 수도 있는 경우
파일로 입출력하기
f = open('input.txt','r') : 파일 열기
read = f.read() : 파일 내용 전체를 하나의 str로 반환
readline = f.readline() : 파일 한줄 읽어서 str로 반환
readlines = f.readlines() : 파일 모든줄 읽고 한줄씩 끊어 str 리스트로 반환
f.close() : 파일 닫기
반응형
'Python > 문법' 카테고리의 다른 글
파이썬(python) 정렬 (sort) (0) | 2021.04.20 |
---|---|
파이썬 (python) 문자열 뒤집기 (reverse) (0) | 2021.04.20 |
파이썬(python) - 이터레이션 형 (Iteration) (0) | 2021.04.18 |
파이썬 (python) - Error 메모장 (0) | 2021.04.04 |
파이썬 (python) - 잡기술 메모장 (0) | 2021.03.22 |