본문 바로가기

교육/[Codeit] 프로그래밍 기초 in Python

실습과제 투표 집계하기

반응형

실습과제
효신이는 매년 국회의원 선거 때마다, 성북구에서 집계 도우미 봉사를 하는데요. 작년까지는 표를 손수 세다가, 올해부터는 IT 시대에 더 적합한 솔루션을 개발하려고 합니다.

파이썬 리스트 votes에는 성북구민들의 투표 결과가 저장되어 있습니다. 리스트 votes의 정보를 토대로, 사전 vote_counter에 후보별 득표수를 정리하는 것이 목표입니다.

예를 들어서 votes['허유나', '서혜선', '허유나']라고 가정하면, vote_counter{'허유나': 2, '서혜선': 1}이 되어야 하는 거죠.

 

# 투표 결과 리스트
votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']

# 후보별 득표수 사전
vote_counter = {}

# 리스트 votes를 이용해서 사전 vote_counter를 정리하기
for name in votes:
# 코드를 작성하세요.

# 후보별 득표수 출력
print(vote_counter)
{'김영자': 11, '강승기': 6, '최만수': 8}

 

 

 

과제 해설
for문을 이용해서 votes에 있는 후보 이름을 순서대로 name이라는 변수에 지정합니다. namevote_counter 사전에 반영하면 되는데요. 두 가지 경우가 있습니다.

해당 후보(name)가 아직 vote_counter에 없는 케이스
해당 후보(name)가 이미 vote_counter에 있는 케이스
1번 케이스는 해당 후보가 첫 득표를 한 상황인데요. 그러면 그냥 vote_counter[name] = 1을 하면 되겠죠?

2번 케이스는 해당 후보가 이미 최소 하나의 득표를 한 상황입니다. 이 경우 기존 득표 수에 1을 늘려 주면 되는데요. 그러면 vote_counter[name] += 1을 하면 됩니다.

모범 답안
# 투표 결과 리스트
votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자',
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기',
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']

# 후보별 득표수 사전
vote_counter = {}

# 리스트 votes를 이용해서 사전 vote_counter를 정리하기
for name in votes:
if name not in vote_counter:
vote_counter[name] = 1
else:
vote_counter[name] += 1

# 후보별 득표수 출력
print(vote_counter)

728x90
반응형

'교육 > [Codeit] 프로그래밍 기초 in Python' 카테고리의 다른 글

리스트와 문자열  (0) 2020.12.01
Aliasing + 퀴즈  (0) 2020.11.28
실습과제 사전 뒤집기  (0) 2020.11.27
사전 활용법  (0) 2020.11.27
실습과제 단어장 만들기  (0) 2020.11.27