Informe de resumen
Parte de la sección Lógica y flujo del Journey de Swift de Coddy. Lección 53 de 56.
Característica final: en lugar de una sola categoría, ejecuta todo el cuestionario y genera un resumen por categoría al final.
Recurrirás a todos los capítulos a la vez: desempaquetado de tuplas para la iteración, evaluación flexible del capítulo sobre cadenas, diccionarios con subíndice predeterminado del capítulo sobre diccionarios e iteración ordenada para obtener una salida determinista.
Construye los contadores por categoría como dos diccionarios paralelos:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]Incrementa totals[cat, default: 0] += 1 por cada pregunta; incrementa rights[cat, default: 0] solo cuando la respuesta sea correcta. Al final, recorre las categorías en orden alfabético para imprimir el informe.
Desafío
IntermedioInicia tu programa con este banco de seis preguntas, el mismo que en el paso anterior:
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")
]Lee seis respuestas de stdin, una por línea, en el mismo orden que el banco. Usa una calificación flexible.
Imprime, en este orden:
- Una línea por categoría, ordenadas alfabéticamente, con el formato
<category>: <right>/<total> - Una línea final:
Total: <right>/<total>para toda la ejecución
Para la entrada 4 / 3.14 / Paris / Atlantic / green / WATER, la salida es:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6Pruébalo tú mismo
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: leer 6 respuestas; calificar con flexibilidad; calcular los totales y aciertos por categoría;
// imprimir las líneas de resumen ordenadas + Total
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Strings a fondo
Conteo e índicesMayúsculas, minúsculas y TrimBúsqueda en StringsDividir y unirReemplazo de subcadenasResumen: Validación de usuario4Conjuntos
Crear conjuntosUnión e intersecciónResta y diferencia simétricaSubconjunto y superconjuntoResumen - Filtro de etiquetas7Proyecto - Seguimiento de hábitos
Descripción general del proyectoMarcar como completado10Proyecto - Motor de cuestionarios
Descripción general del proyectoHacer preguntas2Rangos e Intervalos
Cerrados vs. SemiabiertosSaltos (Stride)Métodos de RangosRangos en SwitchResumen - Cuadrícula de calendario5Funciones de orden superior Pt. 1
MapFilterReduceEncadenar map, filter, reduceResumen - Estadísticas de palabrasPractica por tu cuenta: Playground de Swift