Valutazione flessibile
Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 51 di 56.
L’uguaglianza rigorosa è severa. I quiz veri accettano paris, Paris e PARIS come la stessa risposta.
La ricetta del capitolo 1: rimuovi gli spazi vuoti, converti entrambi i lati in minuscolo, confronta:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Questo è il tipo di helper che vale la pena estrarre in una funzione a sé stante. Il ciclo del quiz risulta più chiaro con una riga per domanda, e la correzione di un bug domani si farà in un solo punto.
Sfida
FacileDefinisci una funzione grade(_ given: String, _ answer: String) -> Bool che restituisce true quando le due stringhe corrispondono dopo aver rimosso gli spazi bianchi e convertito entrambe le parti in minuscolo.
È fornito l'insieme di domande questions. Leggi tre righe da stdin. Stampa, per ogni domanda:
- Il testo della domanda
correctowrongin base al confronto permissivo
Al termine dell'esecuzione, stampa Score: <n>/3.
Per l'input 4 / PARIS / Green, l'output è:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Provalo tu
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 e confronto in minuscolo
// poi esegui un ciclo, stampa la domanda, leggi la risposta, stampa corretto/errato;
// termina con 'Score: <n>/3'
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Conteggio e indiciMaiuscole, minuscole e rimozione degli spaziRicerca nelle stringheSuddivisione e unioneSostituzione di sottostringheRiepilogo - Verifica del nome utente4Insiemi
Creare insiemiUnione e intersezioneDifferenza e differenza simmetricaSottoinsieme e sovrainsiemeRiepilogo - Filtro per tag7Progetto - Tracciatore di abitudini
Panoramica del progettoSegna come completato10Progetto - Motore di quiz
Panoramica del progettoPorre domande2Intervalli e passi
Intervalli chiusi e semiapertiPassoMetodi degli intervalliIntervalli in switchRiepilogo - Griglia del calendario5Funzioni di ordine superiore Parte 1
MapFilterReduceConcatenare map, filter e reduceRiepilogo - Statistiche sulle paroleEsercitati da solo: Playground Swift