💻 프로그래밍 언어/Python

[Python] 값을 입력 받아 리스트에 넣기 (input() 함수와 sys.stdin.readline() 함수)

케로⸝⸝◜࿀◝ ⸝⸝ 2024. 6. 9. 22:49

✏️ input()

사용자가 입력한 값을 읽어들이는 함수

list1 = []
s = input('입력하세요: ')
list1.append(s)
print(list1)

# 입력하세요: A
# ['A']

 

📌 원하는 자료형 받기

만약에 문자열이 아닌 다른 자료형을 입력 받고 싶다면, input 앞에 원하는 자료형을 적기

list1 = []
s = int(input('입력하세요: '))
list1.append(s)
print(list1)

# 입력하세요: 3
# [3]

 

📌 띄어쓰기로 구분된 여러 개 문자 입력값 받기

s = list(input().split())
print(s)

# 가 나 다 라 마
# ['가', '나', '다', '라', '마']

 

📌 띄어쓰기로 구분된 여러 개 숫자 입력값 받기

number = list(map(int, input().split()))
print(number)

# 1 2 3 4 56
# [1, 2, 3, 4, 56]

 

📌 엔터로 구분된 여러 개의 문자 혹은 단어 받기

n = 5
list1 = []
for i in range(n):
  list1.append(input())
print(list1)

"""
딸기
사과
귤
바나나
체리
['딸기', '사과', '귤', '바나나', '체리']
"""

 

📌 엔터로 구분된 여러 개의 숫자 받기

n = 5
list1 = []
for i in range(n):
  list1.append(int(input()))
print(list1)

"""
1
9
50
36
22
[1, 9, 50, 36, 22]
"""

 

 

✏️ sys.stdin.readline()

input() 대신 sys.stdin.readline() 을 사용하는 이유?

  • 반복문으로 여러 줄을 입력 받아야할 때 input() 을 사용하면 시간 초과가 발생할 수 있음
  • 이럴 때 sys.stdin.readline() 사용하기!

 

sys.stdin.readline() 보다 input()이 느린 이유?

  • input() 은 매개변수로 prompt message 를 받는다.
  • 따라서, 입력을 받기 전에 promt message 를 출력해야한다.
  • 입력받은 값의 개행 문자를 삭제시키고 반환한다.

👉 이러한 단계를 거치기 때문에, input() 은 비교적 속도가 느리다.

 

sys.stdin.readline() 의 특징

  • sys.stdin.readline() 은 문자열로 입력을 받는다.
  • 개행 문자(\n)를 같이 입력받는다.

 

📌 한 개의 정수를 입력 받기

import sys
n = int(sys.stdin.readline()) # 5 입력
print(n)

# 5

 

📌 정해진 개수의 정수를 한 줄에 입력 받기

import sys
a, b, c = map(int, sys.stdin.readline().split()) # 1 2 3 입력
print(a)
print(b)
print(c)

# 1
# 2
# 3

 

📌 임의 개수의 정수를 한 줄에 입력 받아 리스트에 저장하기

import sys
list1 = list(map(int, sys.stdin.readline().split())) # 1 2 3 입력
print(list1)

# [1, 2, 3]

 

📌 임의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장하기

import sys
list1 = []
n = int(sys.stdin.readline())
for i in range(n):
  list1.append(list(map(int, sys.stdin.readline().split())))
print(list1)

"""
3
10 11 12
20 21 22
30 31 33
[[10, 11, 12], [20, 21, 22], [30, 31, 33]]
"""

 

📌 문자열 n줄을 입력받아 리스트에 저장하기

import sys
n = int(sys.stdin.readline())
list1 = [sys.stdin.readline().strip() for i in range (n)]
print(list1)

"""
3
리제로부터
시작하는
프로그래머생활
['리제로부터', '시작하는', '프로그래머생활']
"""
  • strip() 은 문자열 맨 앞과 맨 끝의 공백문자를 제거한다.
반응형