Relatório de Resumo
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy. Lição 53 de 56.
Recurso final: em vez de uma categoria, execute o questionário inteiro e gere um resumo por categoria no final.
Você vai recorrer a todos os capítulos de uma só vez: desempacotamento de tuplas para a iteração, avaliação flexível do capítulo sobre strings, dicionários com subscrito padrão do capítulo sobre dicionários e iteração ordenada para obter uma saída determinística.
Crie os contadores por categoria como dois dicionários paralelos:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]Incremente totals[cat, default: 0] += 1 para cada pergunta; incremente rights[cat, default: 0] somente quando a resposta estiver correta. No final, percorra as categorias em ordem alfabética para imprimir o relatório.
Desafio
MédioInicie seu programa com este banco de seis perguntas, o mesmo da etapa anterior:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]Leia seis respostas da entrada padrão, uma por linha, na mesma ordem do banco. Use uma avaliação flexível.
Imprima, nesta ordem:
- Uma linha por categoria, em ordem alfabética, no formato
<category>: <right>/<total> - Uma linha final:
Total: <right>/<total>para a execução inteira
Para a entrada 4 / 3.14 / Paris / Atlantic / green / WATER, a saída é:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6Experimente você mesmo
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]
// TODO: ler 6 respostas; corrigir com tolerância; calcular totais/acertos por categoria;
// imprimir as linhas do resumo em ordem + Total
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