Avaliação Flexível
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 51 de 56.
A igualdade estrita é rigorosa. Quizzes reais aceitam paris, Paris e PARIS como a mesma resposta.
A receita do capítulo 1: remover espaços em branco, converter ambos os lados para minúsculas, 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 é o tipo de helper que vale a pena extrair para sua própria função. O loop do quiz fica mais limpo com uma linha por pergunta, e a correção de bugs de amanhã acontece em um só lugar.
Desafio
FácilDefina uma função grade(_ given: String, _ answer: String) -> Bool que retorna true quando as duas strings coincidem após remover os espaços em branco e converter ambos os lados para letras minúsculas.
O banco de questions é fornecido. Leia três linhas do stdin. Imprima, para cada pergunta:
- O texto da pergunta
correctouwrongcom base na comparação flexível
Após a execução, imprima Score: <n>/3.
Para a entrada 4 / PARIS / Green, a saída é:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Folha de consulta
Comparação de string flexível: remova espaços em branco e converta para minúsculas em ambos os 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
}Experimente você mesmo
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: func grade(_:_:)->Bool com trim + comparação em minúsculas
// depois faça um loop, imprima a pergunta, leia a resposta, imprima correto/errado;
// finalize com 'Score: <n>/3'
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras