파이썬 입출력

이예송·2023년 10월 7일

PS

목록 보기
97/97

1. 입력이 한 줄에 하나씩 들어옴

: input() 함수

💻 Code

#string
N = input()
#int
N = int(input())

🌱 Example

N = int(input()) # N = 5

for _ in range(N):
	print(input()) # 이후의 입력을 한 줄씩 프린트

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

# input = 54321, 모두 더해서 출력
print( sum(map(int, input())) ) # 15

2. 띄어쓰기로 구분되는 N개 값 입력

: input().split()

💻 Code

#string
a,b = input().split()
#int
a,b = map(int, input().split())

#여러 줄 입력, 몇 줄이 입력될지 아는 경우
N = int(input)
for i in range(N):
    A, B = map(int, input().split())

#여러 줄 입력, 몇 줄이 입력될지 모르는 경우
while True:
    try:
        A, B = map(int, input().split())     
        print(A + B)
    except:
        break

#여러 줄 입력, 마지막 행을 아는 경우
# 마지막 행은 0이 두 개이다.
While True:
	A, B = map(int, input().split())
    
    if A == 0 and B == 0:
    	break
    else:
    	print(A + B)

-> 3개라면 a,b,c로 받아주기

🌱 Example

#string
a, b = input().split() # a = "1", b = "2"
lst = list(input().split()) # lst = ["1", "2"]

#int
a, b = map(int, input().split()) # a = 1, b = 2
lst = list(map(int, input().split())) # lst = [1, 2]

💡 Info

  • split() 함수를 사용하면 공백, 개행 문자를 기준으로 문자열을 나눠준다.
  • 공백이 아니라 , 등을 기준으로 나누어 입력받고 싶다면 .split(',')처럼 원하는 구분기호를 넣어주면 된다.
  • 숫자로 입력을 받아야 하는 경우, map() 함수를 사용.
    map(변환할 type, 문자열)을 넣어주면 된다.
    형 변환이 불가능하면 오류가 난다.
  • 쪼개진 값을 리스트에 담고 싶다면 list()로 감싸주기

3. 여러개 값을 일차원 배열로 입력

💻 Code

#int (띄어쓰기로 구분)
arr = list(map(int,input().split()))

#int (띄어쓰기로 구분)
arr = []
for i in range(n): #n 값도 함께 입력받을 때 사용
	arr.append(int(input()))
    
#int (엔터로 구분)
arr = [int(input()) for _ in range(n)] #n=엔터 횟수

#str (엔터로 구분) -> 배열 속에 문자열 하나하나가 값으로 입력
arr = [input() for _ in range(i)]

4. 여러개 값을 이차원 배열로 입력

: arr[이부분][저부분] 에서 이부분은 엔터로 구분되고 저 부분에 대한 구분이 있음 (?)
💻 Code

# 띄어쓰기 구분 x (한 숫자 다 값으로)
arr = [list(map(int,input())) for _ in range(n)]

# 띄어쓰기로 구분 o
arr = [list(map(int,input().split())) for _ in range(n)]

-> int로 매핑한 것을 뺀다면 문자도 가능

N*M 크기의 이차원 리스트 초기화 및 입력받기

n, m = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(n)]

5. 정수를 배열로

💻 Code

num = 12345
arr = list(map(int,str(num)))
 # >> [1,2,3,4,5]

6. 빠른 입력

: sys를 import하고 input()이 들어갈 자리에 sys.stdin.readline()을 입력

💻 Code

import sys
n = int(sys.stdin.readline())

#공백으로 구분된 2개 숫자 입력 받기
a,b = map(int, sys.stdin.readline().split())

#2차원 리스트 입력 받기
board = [list(map(int,sys.stdin.readline().split())) for _ in range(N)]

#문자열 입력 받기
data = sys.stdin.readline().rstrip()

🌱 Example

from sys import stdin

ipt = stdin.readline() # ipt = "3\n"
ipt = stdin.readline().rstrip() # ipt = "3"
ipt = int(stdin.readline()) # ipt = 3

💡 Info

  • 보통 입력받는 값의 개수가 10만 개 정도 되는데 빠른 입력을 사용하지 않는다면 시간 초과가 날 수 있다.
  • 빠른 입력 메서드를 사용하기 위해서는 python 파일 최상단에 sys 모듈의 stdin을 불러와야 한다.
  • readline() 함수를 사용할 때 주의: 개행 문자까지 입력값으로 들어온다.
    ex) "happy"라는 문자열을 stdin.readline()을 통해 읽어오면 "happy\n"으로 읽어옴
  • 개행 문자 때문에 문제가 생기는 것을 방지하기 위해 string type을 읽어올 때는 rstrip()을 통해 우측 개행 문자를 삭제해주는 것이 안전
  • string 형태로 입력값을 받아오기 때문에 숫자로 받고 싶다면 형 변환을 시켜줘야함

0개의 댓글