반응형
수학경시대회 학생 선발
이 코드의 목적은 수학 성적이 85점 이상인 학생들을 선별하고, 이 학생들의 세 과목 총합 점수를 계산하여 총합 점수가 높은 순으로 정렬한 후, 상위 3명을 선출하여 출력하는 것입니다. 이 과정을 단계별로 설명드리겠습니다.
exam_scores
딕셔너리에서 수학 성적이 85점 이상인 학생들을 선별합니다.- 선별된 학생들의 세 과목 성적의 총합을 계산합니다.
- 총합 점수가 높은 순으로 정렬합니다.
- 상위 3명을 선출하여 순위를 매겨 출력합니다.
코딩 부분별 설명
1. 수학 성적 85점 이상인 학생 선별
candidates = dict(filter(lambda x: x[1][0] > 85, exam_scores.items()))
filter
함수를 사용하여 exam_scores
딕셔너리에서 수학 성적이 85점 이상인 학생들만 candidates
딕셔너리에 저장합니다.
2. 학생별로 세 과목 성적의 총합을 계산
candidates = list(map(lambda x: (x[0], sum(x[1])), candidates.items()))
map
함수를 사용하여 각 학생의 세 과목 성적을 더한 총합을 계산합니다. 결과는 리스트 형태로 변환됩니다.
3. 총합이 높은 순으로 정렬
candidates = sorted(candidates, key=lambda x: -x[1])
sorted
함수를 사용하여 총합 점수가 높은 순으로 정렬합니다. key=lambda x: -x[1]
는 총합 점수를 기준으로 내림차순 정렬을 의미합니다.
4. 상위 3명 선출
finalists = candidates[:3]
정렬된 리스트에서 상위 3명을 선출합니다.
5. 결과 출력
i = 1
for name, score in finalists:
print(f"{i}위 진출자: {name} {score}점")
i += 1
상위 3명의 학생과 그들의 총합 점수를 출력합니다.
전체 코드
exam_scores = {
"Peter": (100, 82, 77),
"Tony": (88, 89, 90),
"Clark": (75, 93, 92),
"Bruce": (92, 81, 82),
"James": (79, 90, 88),
"Scott": (95, 84, 86),
"Wade": (86, 79, 98),
"Stephen": (83, 97, 88),
}
# 수학 85점 이상인 학생 선별
candidates = dict(filter(lambda x: x[1][0] > 85, exam_scores.items()))
# 학생별로 세 과목 성적의 총합을 계산
candidates = list(map(lambda x: (x[0], sum(x[1])), candidates.items()))
# 총합이 높은 순으로 정렬
candidates = sorted(candidates, key=lambda x: -x[1])
# 상위 3명 선출
finalists = candidates[:3]
i = 1
for name, score in finalists:
print(f"{i}위 진출자: {name} {score}점")
i += 1
이 코드를 통해 경시대회 참여할 상위 3명의 학생을 선출하고 출력할 수 있습니다.
'실버를 위한 코딩 > 파이썬 연습' 카테고리의 다른 글
모델 개발에서 시드값의 중요성 (0) | 2024.07.02 |
---|---|
[파이썬 연습] 주피터 노트북에서 콘솔(Console)과 터미널(Terminal) (0) | 2024.05.26 |
[파이썬 연습] 주피터 노트북 단축키 (0) | 2024.05.25 |
[파이썬 연습] 주피터 노트북 실행하고 간단 예제 실행 (1) | 2024.05.24 |
[파이썬 연습] 주피터 노트북을 원하는 폴더에서 시작하기 (0) | 2024.05.23 |