파이썬 반복문으로 입력받기 - paisseon banbogmun-eulo iblyeogbadgi

[파이썬] input 여러개

파이썬 input 예제



목차:

  • 1. input 여러개 (한 번에)
  • 2. input 여러개 (반복문)



1. input 여러개 (한 번에)

입력받은 데이터를 가공하여 한 번에 여러개의 data가 입력된 것처럼 할 수 있습니다. 단, data간의 구분자가 필요합니다.

예시 1. data = "사과 배 바나나 수박" 구분자 : 공백( )
예시 2. data = "사과,배,바나나,수박" 구분자 : 쉼표(,)
예시 3. data = "사과/배/바나나/수박" 구분자 : 슬래시(/)

이 구분자를 이용해 문자열 split(자르기) 합니다.

fruits = input("입력(여러개 입력 시 쉼표로 구분) : ").split(',')
print(fruits)
  • 출력
입력(여러개 입력 시 쉼표로 구분) : 사과,배,바나나,수박
['사과', '배', '바나나', '수박']

Process finished with exit code 0



2. input 여러개 (반복문)

반복문을 사용하여 입력을 여러번 나눠할 수 있습니다. 구분자를 필요로 하지 않습니다. 필요에 따라 반복문 종료 문자가 필요할 수 있습니다.


  1. 특정 횟수 반복 입력 (for 반복문)
    • 반복입력 받을 횟수를 정한 뒤 for 문 작성합니다.
# 입력을 저장할 리스트 선언
fruit_list = []
for i in range(1,4)
    fruit = input(f'3개의 과일 입력(현재 {i}번 째) : ')
    fruit_list.append(fruit)
print(fruit_list)
  • 출력
3개의 과일 입력(현재 1번 째) : 사과
3개의 과일 입력(현재 2번 째) : 배
3개의 과일 입력(현재 3번 째) : 바나나
['사과', '배', '바나나']

Process finished with exit code 0
  1. 무한 반복 입력 - while 반복문 입력 종료 문자 필요

    • 반복문을 통해 input 받은 내용을 fruit_list에 저장합니다.
    • 종료 문자 (X 혹은 x)를 입력 받으면 반복문 탈촐합니다.
# 입력을 저장할 리스트 선언
fruit_list = []
while True:
    fruit = input(f'과일 입력(입력 종료 : X) : ')
    if fruit == 'X' or fruit == 'x':
        break
    fruit_list.append(fruit)
print(fruit_list)
  • 출력
과일 입력(입력 종료 : X) : 사과
과일 입력(입력 종료 : X) : 배
과일 입력(입력 종료 : X) : 바나나
과일 입력(입력 종료 : X) : 수박
과일 입력(입력 종료 : X) : 오렌지
과일 입력(입력 종료 : X) : X
['사과', '배', '바나나', '수박', '오렌지']

Process finished with exit code 0


python3.9 |

점프 투 파이썬 00장 들어가기 전에 00-1 머리말 00-2 저자소개 00-3 주요변경이력 00-4 책 구입 안내 01장 파이썬이란 무엇인가? 01-1 파이썬이란? 01-2 파이썬의 특징 01-3 파이썬으로 무엇을 할 수 있을까? 01-4 파이썬 설치하기 01-5 파이썬 둘러보기 01-6 파이썬과 에디터 02장 파이썬 프로그래밍의 기초, 자료형 02-1 숫자형 02-2 문자열 자료형 02-3 리스트 자료형 02-4 튜플 자료형 02-5 딕셔너리 자료형 02-6 집합 자료형 02-7 불 자료형 02-8 자료형의 값을 저장하는 공간, 변수 02장 연습문제 03장 프로그램의 구조를 쌓는다! 제어문 03-1 if문 03-2 while문 03-3 for문 03장 연습문제 04장 파이썬의 입력과 출력 04-1 함수 04-2 사용자 입력과 출력 04-3 파일 읽고 쓰기 04-4 프로그램의 입력과 출력 04장 연습문제 05장 파이썬 날개달기 05-1 클래스 05-2 모듈 05-3 패키지 05-4 예외 처리 05-5 내장 함수 05-6 표준 라이브러리 05-7 외부 라이브러리 05장 연습문제 06장 파이썬 프로그래밍, 어떻게 시작해야 할까? 06-1 내가 프로그램을 만들 수 있을까? 06-2 3과 5의 배수 합하기 06-3 게시판 페이징하기 06-4 간단한 메모장 만들기 06-5 탭을 4개의 공백으로 바꾸기 06-6 하위 디렉터리 검색하기 06-7 파이보 06-8 코딩도장 07장 파이썬 고급주제 07-1 파이썬과 유니코드 07-2 클로저와 데코레이터 07-3 이터레이터와 제너레이터 07-4 파이썬 타입 어노테이션 08장 정규표현식 08-1 정규 표현식 살펴보기 08-2 정규 표현식 시작하기 08-3 강력한 정규 표현식의 세계로 09장 종합문제 10장 풀이 11장 마치며

1. sys.stdin.readline

import sys

T = int(input())
for i in range(T):
        a,b = map(int, sys.stdin.readline().split())
        print(a+b)
  • 반복문으로 여러줄을 입력 받아야 할 때는 input()으로 입력 받는다면 시간초과가 발생할 수 있다.
  • 반복문으로 여러줄 입력받을 땐 sys.stdin.readline()을 사용해야 시간초과되지 않는다.

1) 한 개의 정수를 입력 받기

import sys
a = int(sys.stdin.readline().rstrip())

print(a)
>> 입력
1
>> 출력
1
  • sys.stdin.readline()은 한줄 단위로 입력받기 때문에, 개행문자가 같이 입력된다.
    • 만약 1을 입력했다면, 1\n 이 저장되기 때문에, 개행문자를 제거해야 한다.개행문자를 제거하려면, .rstrip()을 붙여주면 된다.
  • 변수 타입이 문자열 형태(str)로 저장되기 때문에, 정수로 사용하기 위해서 형변환을 거쳐야 한다.

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

import sys

a,b,c = map(int,sys.stdin.readline().split())
  • a,b,c에 대해 각각 int형으로 형변환 되었다.
  • map()은 반복 가능한 객체(리스트 등)에 대해 각각의 요소들을 지정된 함수로 처리해주는 메소드이다.

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

import sys
data = list(map(int,sys.stdin.readline().split()))

print(data)
>> 입력
1 2 3 4 5

>> 출력
[1, 2, 3, 4, 5]
  • split()은 문자열을 나눠주는 메소드이다.
  • 괄호 안에 특정 값을 넣어주면 그 값을 기준으로 문자열을 나누고, 아무 값도 넣어주지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 나눈다.
  • list()는 자료형을 리스트형으로 변환해주는 함수다.
  • map()은 맵 객체를 만든다.

4-1) 임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장하기(1)

import sys

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

print(data)
>> 입력
3
1 2 3 
4 5 6
7 8 9

>> 출력
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

이렇게 한다면 각 요소의 길이가 동일한 2차원 리스트도 만들 수 있고,
각각 길이가 다른 2차원 리스트도 입력 받을 수 있다.

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

import sys

data = []
n = int(sys.stdin.readline())
data = [list(map(int, input().split())) for _ in range(n)]

print(data)
>> 입력
3
1 2 3 
4 5 6
7 8 9

>> 출력
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

이렇게 한다면 각 요소의 길이가 동일한 2차원 리스트도 만들 수 있고,
각각 길이가 다른 2차원 리스트도 입력 받을 수 있다.

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

import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
>> 입력
3
안녕
하세요 !
룰루리 랄라

>> 출력
['안녕', '하세요 !', '룰루리 랄라']
  • strip()은 문자열 맨 앞과 맨 끝의 공백문자를 제거한다.

https://developeryuseon.tistory.com/90