이번 문제는 다른 문제와 다르게 종료 조건이 설정되어있지 않다.
따라서 문제에서 입력이 주어지지 않을 때 자동으로 입력받는 것을 그만해야 한다.
import sys
import string
L_alphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
S_alphabet = list(''.join(L_alphabet).lower())
for T in sys.stdin:
T.rstrip()
small = 0; large =0; blank = 0; number =0
for i in T:
if i == ' ':
blank += 1
elif i in L_alphabet:
large += 1
elif i in S_alphabet:
small += 1
elif i in string.digits:
number += 1
print(small, large, number, blank)
for T in sys.stdin:
sys.stdin을 하게 되면 input()와 같이 터미널에서 입력을 받아서 이를 변수가 참조할 수 있도록 해준다.
단 input()과 다르게 입력이 더이상 없을 때 자동으로 종료하기 때문에 이와 같이 EOF가 따로 설정되어 있지 않을 때 매우 유용한 모듈이다.
코드에선 L_alphabet 리스트에 대문자의 원소를 넣고 이를 문자열로 변환하여 소문자 알파벳으로 변경했는데 이러한 방법말고 모듈을 통해 다음과 같이 대문자, 소문자 리스트를 만들 수 있다.
import string
L = [i for i in string.ascii_uppercase]
S = [i for i in string.ascii_lowercase]
print(L)
>>> ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
print(S)
>>> ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
출처:
docs.python.org/ko/3/library/sys.html
'컴퓨터 > BOJ' 카테고리의 다른 글
[BOJ](Phython) 15474번 : 鉛筆 / 정수 올림하는 방법 (0) | 2020.09.06 |
---|---|
[BOJ](Python) 15128번 : Congruent Numbers / 부동소수점 오차 (0) | 2020.09.06 |
[BOJ](Python) 8320번 : 직사각형을 만드는 방법 (0) | 2020.08.30 |
[BOJ](Python) 1010번 : 다리 놓기 (0) | 2020.08.30 |
[BOJ](Python) 6679번 : 싱기한 네자리 숫자 / n진법 변환 방법 (0) | 2020.08.30 |