요약 보고서
Coddy Swift 여정의 로직과 흐름 섹션에 포함된 레슨. 56개 중 53번째.
마지막 기능: 한 가지 범주만 실행하는 대신 전체 퀴즈를 실행하고 마지막에 범주별 요약을 표시합니다.
반복에는 튜플 구조 분해를, 문자열 단원에서 배운 관대한 채점을, 딕셔너리 단원에서 배운 기본 첨자 딕셔너리를, 결정론적 출력을 위해 정렬된 반복을 한꺼번에 활용하게 됩니다.
카테고리별 카운터를 두 개의 병렬 딕셔너리로 만드세요:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]모든 질문에 대해 totals[cat, default: 0] += 1을 증가시키고, 정답을 맞힌 경우에만 rights[cat, default: 0]를 증가시킵니다. 마지막에는 카테고리를 알파벳순으로 순회하며 보고서를 출력합니다.
챌린지
중급이전 단계와 동일한 여섯 개의 질문으로 프로그램을 시작하세요:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]표준 입력에서 답 여섯 개를 한 줄에 하나씩, 질문 목록과 동일한 순서로 읽으세요. 관대한 채점 방식을 사용하세요.
다음 순서대로 출력하세요:
- 카테고리별로 한 줄씩, 알파벳순으로 정렬하여
<category>: <right>/<total>형식으로 출력합니다. - 전체 실행의 최종 결과를
Total: <right>/<total>형식으로 한 줄 출력합니다.
입력이 4 / 3.14 / Paris / Atlantic / green / WATER이면 출력은 다음과 같습니다:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6직접 해보기
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]
// TODO: 답변 6개를 읽고 느슨하게 채점한 뒤 카테고리별 전체 문제 수와 정답 수를 집계한다;
// 정렬된 요약 줄과 Total을 출력한다
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직과 흐름의 모든 레슨
직접 연습해 보세요: Swift 플레이그라운드