실습과제
효신이는 매년 국회의원 선거 때마다, 성북구에서 집계 도우미 봉사를 하는데요. 작년까지는 표를 손수 세다가, 올해부터는 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이라는 변수에 지정합니다. name을 vote_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)
'교육 > [Codeit] 프로그래밍 기초 in Python' 카테고리의 다른 글
리스트와 문자열 (0) | 2020.12.01 |
---|---|
Aliasing + 퀴즈 (0) | 2020.11.28 |
실습과제 사전 뒤집기 (0) | 2020.11.27 |
사전 활용법 (0) | 2020.11.27 |
실습과제 단어장 만들기 (0) | 2020.11.27 |