Menu
CoddyTech

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 demasiado rigurosa. Los cuestionarios reales aceptan paris, Paris y PARIS como la misma respuesta.

La receta del capítulo 1: eliminar los espacios en blanco, convertir ambos lados a minúsculas y 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 función auxiliar que vale la pena extraer en una función propia. El bucle del cuestionario se lee mejor con una línea por pregunta, y la corrección del error de mañana se hace en un solo lugar.

challenge icon

Desafío

Fácil

Define 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.

Empieza tu programa con este banco de questions, el mismo que en el paso anterior:

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("geo", "Capital of France?", "Paris"),
    ("science", "Color of grass?", "green")
]

Lee tres líneas de la entrada estándar. Imprime, para cada pregunta:

  1. El texto de la pregunta
  2. correct o wrong, según 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/3

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 comparación tras eliminar espacios y convertir a minúsculas
// luego recorre las preguntas, imprime cada pregunta, lee la respuesta e imprime si es correcta o incorrecta;
// termina con 'Score: <n>/3'
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Swift