티스토리 뷰

Python

[Python] 입출력 - input(), print()

ellie.strong 2020. 10. 24. 01:35
728x90

입력 받기 - input( )

input()의 경우 한 줄의 문자열을 입력 받도록 해준다. 

data = input()

 

입력받은 데이터를 정수형 데이터로 처리해야하는 경우 int() 함수를 사용한다. 

n = int(input())

 

코딩 테스트>> 여러 개의 데이터를 입력받을 때는 데이터가 공백으로 구분되는 경우가 많다. 그래서 입력받은 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드의 사용 빈도가 매우 높다. 

data = list(map(int, input().split()))
  1. input()으로 입력받은 문자열을 split()을 이용해 공백으로 나눈 리스트로 변환한다. 

  2. map을 이용해 해당 리스트의 모든 원소에 int() 함수를 적용한다. 

  3. 최종적으로 그 결과를 list로 다시 바꿔준다. 

예) 입력을 위한 전형적인 소스코드

# 입력 예시
5
65 90 75 34 99

# 데이터의 개수 입력
n = int(input())
# 각 데이터를 공백으로 구분하여 입력
data = list(map(int, input().split()))

data.sort(reverse = True) # 내림차순 정렬
print(data) # [99, 90, 75, 65, 34]

 

예) 공백을 기준으로 구분하여 적은 수의 데이터 입력

# 입력 데이터
3 5 7

# n, m, k를 공백으로 구분하여 입력
n, m, k = map(int, input().split())

print(n, m, k) # 3 5 7

 

코딩 테스트>> 정렬, 이진 탐색, 최단 경로 문제의 경우 매우 많은 수의 데이터가 연속적으로 입력이 되곤 한다. 가령 1,000만 개가 넘는 라인이 입력되는 경우도 있는 데, 이럴 경우 입력을 받는 것만으로도 시간 초과를 받을 수 있다. (각 데이터가 공백으로 구분되어 입력되는 게 아니라, 한 줄마다 입력되는 경우도 존재한다.) → 사용하는 언어별로 더 빠르게 입력 받는 방법을 알고 있어야한다. 

 

기본 input() 함수 : 동작 속도가 느려서 시간 초과로 오답 판정을 받을 수 있다. 

→ 파이썬의 sys 라이브러리의 sys.stdin.readline() 함수를 이용한다. 

 

sys.stdin.readline( )

input() 함수와 같이 한 줄씩 입력받기 위해 사용한다. 

import sys

data = sys.stdin.readline().rstrip()

한 줄을 입력받고 나서는 rstrip() 함수를 꼭 호출해줘야 한다. readline()으로 입력받으면 입력 후 엔터(Enter)가 줄 바꿈 기호로 입력되게 되므로, 이 공백 문자를 제거해 주는 rstrip() 함수를 꼭 호출해줘야 한다.

 

출력 하기 - print( )

print() 함수는 변수나 상수를 매개변수로 입력받아 이를 표준 출력으로 출력한다. 각 변수를 콤마(,)로 구분하여 매개변수로 넢을 수 있으며, 이 경우 각 변수가 띄어쓰기로 구분되어 출력된다. 

a = 1
b = 2

print(a, b) # 1 2

 print() 함수는 기본적으로 출력 이후에 줄 바꿈을 수행한다. 따라서 print()를 사용할 때마다 출이 변경된다고 볼 수 있다. 

a = 1
b = 2

print(a)
print(b)

# 출력
1
2

 

코딩 테스트>> 일부 문제의 경우 출력할 때 문자열과 수를 함께 출력해야 되는 경우가 있는데, 이 경우 파이썬에서는 단순히 더하기 연산자(+)를 이용하여 문자열과 수를 더하면 오류가 발생한다. 

 

예) 출력 시 오류가 발생하는 소스코드

answer = 7

print("정답은 " + answer + "입니다.") # TypeError: cannot concatenate 'str' and 'int' objects

솔루션1) str() 함수를 이용하여 출력하고자 하는 변수 데이터를 문자열로 바꾸어준다. 

answer = 7

print("정답은 " + str(answer) + "입니다.") # 정답은 7입니다.

 솔루션2) 각 자료형을 콤마(,)를 기준으로 구분하여 출력한다. 

answer = 7

print("정답은", str(answer), "입니다.") # 정답은 7 입니다. 

print("정답은", answer, "입니다.") # 정답은 7 입니다. 

→ 변수의 값 사이에 의도치 않은 공백이 삽입될 수 있다. 

솔루션3) Python 3.6 이상의 버전부터는 f-string 문법을 사용해 출력할 수 있다. 

answer = 7

print(f"정답은 {answer}입니다.") # 정답은 7입니다.

 

 

728x90
댓글
공지사항
최근에 올라온 글