새소식

250x250
알고리즘 분류/입출력

기본 입출력

  • -
728x90

여기서는 기본적인 파이썬의 입/출력에 대해 살펴보자.

 

 

기본 입력 방식

 

한 줄 입력 받기

기본 함수인 input()을 이용하면 문자열로 한 줄을 받아올 수 있고 필요하다면 int, float 등 함수를 이용해 원하는 타입으로 변경할 수 있다.

# 문자열로 입력
s = input()

# 정수로 입력
n = int(input())

# 실수로 입력
f = float(input())

 

 

여러 값을 한 줄로 입력 받기

input()을 통해 받은 데이터는 split()으로 쪼갤 수 있고 map 함수를 이용하면 쪼갠 데이터를 원하는 타입으로 변경할 수 있다. map의 결과로 여러 값이 반환될 수 있을 텐데 여러 변수로 destructuring 할 수도 있고 list로 받을 수도 있겠다.

# 공백으로 구분된 두 정수 - unpacking (javascript의 destructuring 개념)
a, b = map(int, input().split())

# 공백으로 구분된 여러 정수를 리스트로
arr = list(map(int, input().split()))

 

 

 

여러 줄 입력 받기

여러 줄을 입력 받을 때는 당연히 반복문을 사용한다. for와 함께 range 함수를 사용할 수 있다.

# n개의 줄 입력
n = int(input())
for i in range(n):
    line = input()

 

 

입력 최적화

 

빠른 입력 처리

빠른 입력을 위해서는 sys의 sys.stdin.readline을 사용한다. 기본으로 제공되는 input을 readline으로 대체해서 사용하면 된다. 주의할 점은 sys.stdin.readline()의 경우 마지막 개행문자를 포함하므로 문자열 입력 시 strip() 또는 rstrip()을 사용하는 것이 안전하다.

import sys
input = sys.stdin.readline # 대체

s = input().strip()        # 개행문자 제거

 

 

문자열을 이용한 입력

입력을 콘솔로 받지 않고 저장되어있는 문자열을 이용하려면 io의 StringIO를 이용할 수 있다. 기본적인 sys.stdin은 콘솔 기반이므로 이것을 io.StringIO로 대체해주자.

import sys
from io import StringIO

src = ""

sys.stdin = StringIO(src)      # stdin 대체
input = sys.stdin.readline     # input 대체 

for t in range(int(input())):

 

 

 

출력 방식

 

기본 출력

# 단순 출력
print("Hello")
print(123)

# 여러 값 출력 (공백으로 구분)
print(a, b, c)  # "1 2 3"

# 구분자 변경
print(a, b, c, sep=', ')  # "1, 2, 3"
print(a, b, c, sep='\n')  # 줄바꿈으로 구분

# 끝 문자 변경 (기본은 '\n')
print(a, end=' ')  # 줄바꿈 없이 공백
print(b)  # "1 2"

 

 

포멧팅  출력

a, b = 10, 20

# f-string (Python 3.6+, 가장 추천)
print(f"{a} {b}")
print(f"합: {a + b}")

pi = 3.141592653589793

# f-string으로 소수점 자릿수 지정
print(f"{pi:.2f}")   # 3.14 (소수점 2자리)
print(f"{pi:.4f}")   # 3.1416 (소수점 4자리, 반올림)
print(f"{pi:.0f}")   # 3 (정수로 반올림)

 

 

모아서 출력하기

Java에서 출력 시 StringBuilder에 모아서 출력하듯이 List에 담아서 출력하자.

result = []
for i in range(n):
    result.append(str(i))
print('\n'.join(result))

 

 

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.