문제
입력 받은 대로 출력하는 프로그램을 작성하시오.
입력
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
출력
입력받은 그대로 출력한다.
'문제 의도'
문자열을 올바르게 입력받고 파일의 끝(EOF)을 올바르게 판단할 수 있는 있는가
즉, 더 이상 읽을 게 없을 때 프로그램을 종료하는 법을 알아야 한다.
'정답 코드'
1) try-except 구문 사용
while True:
try:
print(input())
except EOFError:
break
2) sys.stdin.readlines() 메소드 사용
import sys
s = sys.stdin.readlines()
for i in s:
print(i.rstrip())
3) sys.stdin.read() 메소드 사용
import sys
print(sys.stdin.read())
'공부한 것'
- EOF(End Of File) : 문자의 끝을 의미
~> 사용자가 입력을 마칠 경우 EOF가 인식되며, EOFError는 EOF가 입력될 경우 나타나는 에러
⭐⭐⭐
Hmm.. Q. try - except 예외처리 구문 vs sys.stdin.readlines()?
A) input()은 EOFError를 발생시키기 때문에, except 구문을 통한 예외처리로 정상적인 프로세스 종료가 가능,
반면 sys.stdin.readlines()은 빈문자열을 반환함으로써 입력 초과를 만들어냄
- try-except 구문 : 에러가 발생하는 상황에서 예외 처리할 수 있는 구문
try:
예외가 발생할 가능성이 있는 코드
except:
예외가 발생했을 때 실행할 코드
(필요에 따라 except 절을 추가로 작성)
~> 예외 케이스
- ZeroDivisionError : 값을 0으로 나누려고 할 때 발생하는 에러
- SystemExit : 프로그램 종료하는 명령이 실행되었을 경우
- KeyboardInterrupt : Control + C 키가 입력되었을 경우
- EOFError : 읽어들일 데이터가 없을 경우
- IndexError : list 등에서 잘못된 인덱스로 접근할 경우
- PermissionError : 명령을 실행할 권한이 없을 경우
- sys.system.readline() : 문자열 형태로 개행문자를 포함한 한 줄만 입력됨.
- sys.system.readlines() : 파일의 끝까지 한번에 읽어옴. 각 줄이 개행문자가 포함되어 리스트로 저장됨.
- sys.system.read() : 파일의 끝까지 한번에 읽어오고 읽은대로 출력.
- sys.stdin.read().splitlines() : 파일의 끝까지 한번에 읽어오고 개행문자를 제외해 리스트로 읽음.
- lstrip() : 문자열의 왼쪽 공백이나 인자가 된 문자열의 모든 조합을 제거
ex) 'apple'.lstrip('p')의 output은 'ale'
- rstrip() : 문자열의 오른쪽 공백이나 인자가 된 문자열의 모든 조합을 제거
- strip() : 양쪽 문자열의 공백이나 인자가 된 문자열의 보든 조합을 제거
'I can do it on my own! > 백준' 카테고리의 다른 글
[백준] 3003번 파이썬(Python) (0) | 2023.05.25 |
---|---|
[백준] 25083번 파이썬(Python) (0) | 2023.05.25 |
[백준] 5622번 파이썬(Python) (0) | 2023.05.23 |
[백준] 2908번 파이썬(Python) (0) | 2023.05.23 |
[백준] 2675번 파이썬(Python) (0) | 2023.05.23 |