study gomi

Python 입력 받기 심화 (개수 모를 때 / 특정 문자까지 입력 받기 등) 본문

basic/python

Python 입력 받기 심화 (개수 모를 때 / 특정 문자까지 입력 받기 등)

공부하곰 2024. 1. 14. 12:02
728x90
반응형
더보기

- 코테 연습 할 때 자주 써먹는 것들 모음

- 내가 보려고(공부 하는 중......) 적어두는 글

- 새로운 것이 생기면 그 때 그때 업데이트 할 글

* 입력 받기 기본 - https://taetaegom.tistory.com/11

 

[Python|파이썬] 기본 문법 - 입력 받기

문자열 입력받기 1. 기본 str = input() print(str) 2. 터미널/파워쉘에서 입력 전에 안내문구 출력하기 str = input("문자열 입력.") print("입력받은 문자열은 {str}".format(str)) 정수 입력 받기 1. 하나 입력 받

taetaegom.tistory.com

 

1. 특정 문자까지 입력 받기

- 이런 경우 Python에서 제공하는 'sys.stdin'을 활용

(sys.stdin 참고 ↓)

더보기

sys.stdin을 사용하면 표준 입력으로부터 문자열을 읽어들일 수 있으며,

이를 이용해 특정 문자가 나타날 때까지 입력을 계속 받을 수 있다.

- ex_콤마('.')가 입력될 때까지 몇 줄이든 입력을 계속 받기

import sys

# 입력을 계속 받는다.
input_string = ""
for line in sys.stdin:
    input_string += line
    if '.' in line:
        break

# 결과 출력
print(input_string)

(코드 설명 참고↓)

더보기
  • 'sys.stdin'을 사용하여 입력을 계속 읽어드린다.
  • 각 줄이 입력될 때마다 'input_string'에 추가됨.
  • 만약 입력된 문자열 중에 '.'이 포함되어 있으면 반복문이 종료되어 입력을 멈춤.

- 이 방법을 사용하면 개행문자('\n')가 포함된 문장도 받을 수 있다.

- 단, 스크립트 파일을 실행하는 환경에서 사용해야 함 : 표준 입력으로부터 입력을 받기 때문에 대화형 인터프리터나 Jupyter Notebook과 같은 환경에서는 정상적으로 작동하지 않을 수 있음. 

 

2. 여러 줄을 입력, 그 중 특정문자만 입력되면 종료 (1번의 심화)

- 단순히 특정 문자를 만났을 때 종료하는 것이 아니라 특정 문자만 입력받으면 종료.

- 특정 문자가 포함된 줄은 종료 조건으로 취급하지 않는 경우 (예_백준4949번 https://www.acmicpc.net/problem/4949)

- ex1_입력을 여러 줄 받아서 각 줄이 '.'으로 끝나는 경우 해당 문장을 리스트에 저장하고 입력이 '.'만 들어온 경우 입력을 종료하기

import sys

sentences = []

for line in sys.stdin:
    # 개행 문자 제거
    line = line.strip()

    # '.'만 있는 줄이 들어오면 입력 종료
    if line == '.':
        break

    # 문장 끝에 '.'가 있다면, '.'을 제외하고 리스트에 추가
    if line.endswith('.'):
        sentences.append(line[:-1])
    else:
        sentences.append(line)

# 결과 출력
print(sentences)

(코드 설명 참고↓)

더보기
  • sys.stdin을 활용
  • 각 입력된 줄에 대해 개행 문자('\n')를 제거
  • 만약 줄이 '.'으로 끝나는 경우 콤마/온점을 제외한 나머지 부분을 리스트에 추가.
  • 각 문장들은 순서대로 리스트에 저장됨(꼭 리스트를 쓸 필요는 없지만 편의상)
  • '.'만 있는 줄이 들어오면 입력을 종료.

-ex2_ 예시 1과 비슷하게 '.'으로 끝나는 문장 여러개 입력 받다가 단순히 입력이 '.'만 있는 경우 입력 종료

while True:
    string = input().rstrip('.')

    if not string:
        break
    
    # 입력받은 string으로 처리 할 동작 작성..

 

(코드 설명 참고↓)

더보기

 

3. 입력 개수를 모를 때 정수 n 개 입력 받기

- 그냥 list로 받아서 넣으면 됨 => 입력이 한 개만 들어오든 두,세 개가 들어오든 상관 없다.

x = list(map(int, input().split()))

 

728x90
반응형