Calificación flexible
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 51 de 56.
La igualdad estricta es rigurosa. Los cuestionarios reales aceptan paris, Paris, y PARIS como la misma respuesta.
La receta del capítulo 1: eliminar espacios en blanco, convertir a minúsculas ambos lados, comparar:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Este es el tipo de ayudante que vale la pena extraer a su propia función. El bucle del cuestionario se lee de forma más limpia con una línea por pregunta, y la corrección de errores de mañana se realiza en un solo lugar.
Desafío
FácilDefine una función grade(_ given: String, _ answer: String) -> Bool que devuelva true cuando las dos cadenas coincidan después de eliminar los espacios en blanco y convertir ambas a minúsculas.
Se proporciona el banco de questions. Lee tres líneas desde stdin. Imprime, para cada pregunta:
- El texto de la pregunta
correctowrongbasado en la comparación flexible
Después de la ejecución, imprime Score: <n>/3.
Para la entrada 4 / PARIS / Green, la salida es:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Hoja de referencia
Comparación de cadenas flexible: elimina los espacios en blanco y convierte a minúsculas ambos lados antes de comparar.
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Pruébalo tú mismo
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: func grade(_:_:)->Bool con trim + comparación en minúsculas
// luego un bucle, imprimir pregunta, leer respuesta, imprimir correcto/incorrecto;
// terminar con 'Score: <n>/3'
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 palabras