hp0724 2023. 6. 28. 12:15

bookmark

문제

문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.

각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.

입력

첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.

출력

첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.

나의 풀이

# 문자열 N개가  소문자,대문자,숫자,공백
import sys

# "a" = 97 "z" 122 'A' =65 'Z'=90  ' ' = 32

while True:
    expression = sys.stdin.readline().strip("\n")
    # EOF 처리
    if not expression:
        break
    small_letter = 0
    capital_letter = 0
    number = 0
    blank = 0

    for i in expression:
        if ord(i) >= 97 and ord(i) <= 122:
            small_letter += 1
        elif ord(i) >= 65 and ord(i) <= 90:
            capital_letter += 1
        elif ord(i) >= 48 and ord(i) <= 57:
            number += 1
        elif ord(i) == 32:
            blank += 1
    print(small_letter, capital_letter, number, blank)

n을 입력받는 경우가 없는경우 종료조건을 넣어야함

expression = sys.stdin.readline().rstrip()
    # EOF 처리
    if not expression:
        break
  expression = sys.stdin.readline().strip("\n")

문자열 뒤에도 공백이 있을수 있으니깐 strip을 \n만 주기