본문 바로가기
프로그램

[파이썬] 문제 : 문자열의 단어수 Count

by 오디세이99 2022. 12. 15.
728x90
반응형
[문제]
아래와 같은 조건으로 학교 홈페이지의 교장선생님 인사말을 분석해보는 프로그램을 작성해보자
 
조건1: 교장선생님 인사말은 문자열로 지정한다.
조건2: 교장선생님 인사말에서 나온 총 단어를 띄어쓰기(space)를 기준으로 분리한후, 딕셔너리를 이용하여 인사말에서 추출한 단어 (key)와 그 단어의 빈도(value)를 카운트한다.
조건3: 반복문과 조건문 사용
조건4: 교장선생님 인사말의 단어중 '학교'라는 단어가 몇개가 나오는지 찾아보자
 
(교장선생님 인사말)
text= "여러분 안녕하세요. 여러분을 학교에서 뵙게 되어 반갑습니다. 학교엔 가을의 짙은 향기와 바람이 가득합니다. 학교 이곳저곳이 노랗고 울긋불긋한 단풍으로 화려한 그림을 그리고 있네요. 학교 안에서 여러분의 꿈이 조금씩 실현되어지길 기대합니다. 감사합니다."
 
[실행결과]
교장선생님 인사말의 총 단어수: ___
교장선생님 인사말 중 학교단어의 반복회수:____
 
 
(방법)
- 반복문과 조건문으로 하라는 요청에 따라 만든 코드 입니다.
text = "여러분 안녕하세요. 여러분을 학교에서 뵙게 되어 반갑습니다. 학교엔 가을의 짙은 향기와 바람이 가득합니다.\
     학교 이곳저곳이 노랗고 울긋불긋한 단풍으로 화려한 그림을 그리고 있네요. \
     학교 안에서 여러분의 꿈이 조금씩 실현되어지길 기대합니다. 감사합니다."

data = {}                       # 딕셔너리 선언
lst = text.split()              # 공백으로 분리하여 리스트로 만듬. split() = split(' ')와 같음

school_cnt = 0                  # 학교 단어 수 변수
for i in range(len(lst)):      # 공백으로 분리한 단어 수 만큼 반복
    if lst[i] in data:         # 단어가 딕셔너리에 있는지 확인
        data[lst[i]] += 1      # 단어가 딕셔너리에 있다면 +1 (반복회수)
    else:
        data[lst[i]] = 1       # 단어가 없다면 새로 추가학호 1로 함(반복회수)
    
    if '학교' in lst[i]:      # 단어가 '학교' 인지 확인. 단순 lst[i]==학교로 하지 않고 '학교'라는 단어가 포함된 단어면 +1
        school_cnt += 1       # 단어가 '학교'면 +1

# w_cnt = len(lst)
w_cnt = len(data)             # 딕셔너리를 Count 하여 단어수(같은 단어 여러번도 1로 됨)
print("교장선생님 인사말의 총 단어수:",w_cnt)
print("교장선생님 인사말 중 학교단어의 반복회수:",school_cnt)

728x90
반응형

댓글