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. Questionários reais aceitam paris, Paris e PARIS como a mesma resposta.
A receita do capítulo 1: remova os espaços em branco, converta os dois lados para minúsculas e compare:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Esse é o tipo de função auxiliar que vale a pena separar em uma função própria. O loop do quiz fica mais fácil de ler 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 retorne true quando as duas strings corresponderem após remover os espaços em branco e converter ambos os lados para minúsculas.
Comece seu programa com este banco de questions, o mesmo da etapa anterior:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]Leia três linhas da entrada padrão. Imprima, para cada pergunta:
- O texto da pergunta
correctouwrong, com 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/3Experimente você mesmo
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: implementar func grade(_:_:)->Bool com trim + comparação em lowercase
// depois, percorra as perguntas, exiba cada pergunta, leia a resposta e exiba se está correta ou incorreta;
// termine 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 PalavrasPratique por conta própria: Playground de Swift