Lista 06 · Muitos caminhos¶
Esta lista é sobre escolher entre três ou mais caminhos, e quase todos os erros dela são do mesmo tipo: o programa roda, não reclama e devolve a faixa errada.
Antes de rodar qualquer exercício, faça o teste no papel. Pegue um valor de cada
faixa — e os valores de fronteira, que são os que pegam todo mundo — e siga
a escada de elif com o dedo, de cima para baixo. Se algum elif nunca for
alcançado, o problema é a ordem, não a condição.
O exercício 06 já vem escrito e errado. Ele é o mais importante da lista.
Como esta lista funciona
Cada exercício abaixo é um arquivo só. Copie o código inteiro, cole no
OnlineGDB, escreva a sua solução no lugar do # TODO e
aperte ▶ Run.
Nos exercícios que mostram como deve ficar, compare a sua saída com a publicada aqui, linha por linha. Espaço a mais, acento faltando e letra maiúscula contam: o computador não relaxa em nenhum deles.
Parte A · no papel¶
Faça esta parte antes de ligar o computador
Escreva a resposta no caderno, depois rode para conferir. Prever e errar ensina; rodar primeiro e ler a saída, não.
A1. O que este programa imprime, e por quê?
Troque o segundo if por elif e diga o que muda.
A2. Nesta escada, um dos elif nunca roda, para valor nenhum. Qual, e
por quê?
Reescreva-a certa.
A3. Com idade = 14 e altura = 1.45, diga o valor de cada expressão:
A4. Este programa imprime Fim de semana para qualquer valor de dia.
Explique por quê, e conserte.
A5. Preencha a tabela para o programa do exercício 02, com as faixas abaixo de 200, de 200 a 399 e de 400 em diante:
| minutos | preço esperado |
|---|---|
| 0 | |
| 199 | |
| 200 | |
| 399 | |
| 400 | |
| 1000 |
São os seis valores que você deve testar em qualquer exercício de faixa: os dois extremos e as duas fronteiras, de cada lado.
A6. Reescreva este trecho sem o if aninhado, usando and:
Parte B · no computador¶
Exercício 01¶
Escreva um programa que pergunte um número e mostre se ele é positivo,
negativo ou zero.
Escreva exatamente essas três palavras, em minúsculas e sem acento.
Rode o programa também com estes números e confira cada resposta:
| Número | Resposta esperada |
|---|---|
| 7 | positivo |
| -3 | negativo |
| 0.5 | positivo |
| -0.5 | negativo |
Como deve ficar. Rodando o programa e digitando 0,
a tela tem de ficar assim:
# Exercício 01 — positivo, negativo ou zero.
# TODO: pergunte um numero.
# TODO: use if, elif e else para os tres casos.
# TODO: mostre a palavra correspondente.
Exercício 02¶
A operadora cobra por faixa de consumo:
| Minutos no mês | Preço por minuto |
|---|---|
| abaixo de 200 | R$ 0,20 |
| de 200 a 399 | R$ 0,18 |
| de 400 em diante | R$ 0,15 |
Escreva um programa que pergunte quantos minutos o cliente falou no mês e mostre o preço por minuto da faixa dele, com duas casas decimais.
Confira as fronteiras: 200 minutos já são a faixa do meio, e 400 já são a faixa de cima.
Rode o programa também com estes valores e confira cada resposta — são os seis da tabela da Parte A:
| Minutos | Preço esperado |
|---|---|
| 0 | R$ 0,20 |
| 199 | R$ 0,20 |
| 399 | R$ 0,18 |
| 400 | R$ 0,15 |
| 1000 | R$ 0,15 |
Como deve ficar. Rodando o programa e digitando 200,
a tela tem de ficar assim:
# Exercício 02 — o preço da faixa de consumo.
# TODO: pergunte quantos minutos o cliente falou no mes.
# TODO: escada de if/elif/else com as tres faixas, na ordem certa.
# TODO: mostre o preco por minuto com duas casas decimais.
Exercício 03¶
Uma competição de atletismo separa os participantes em categorias:
| Idade | Categoria |
|---|---|
| até 12 anos | Infantil |
| de 13 a 17 | Juvenil |
| 18 ou mais | Adulto |
Escreva um programa que pergunte a idade do participante e mostre a categoria.
Idade zero ou negativa não é categoria nenhuma: nesse caso, mostre
Idade invalida.
Comece a escada pelo teste que rejeita. Depois dele, você já sabe que a idade é positiva, e o resto fica simples.
Rode o programa também com estas idades e confira cada resposta:
| Idade | Resposta esperada |
|---|---|
| 10 | Infantil |
| 12 | Infantil |
| 13 | Juvenil |
| 17 | Juvenil |
| 18 | Adulto |
| 70 | Adulto |
| -5 | Idade invalida |
Como deve ficar. Rodando o programa e digitando 0,
a tela tem de ficar assim:
# Exercício 03 — a categoria do participante.
# TODO: pergunte a idade.
# TODO: rejeite idade <= 0 primeiro, depois classifique nas tres faixas.
# TODO: mostre a categoria.
Exercício 04¶
Um brinquedo do parque exige pelo menos 12 anos e pelo menos 1,50 m. As duas exigências valem ao mesmo tempo: quem tem 30 anos e 1,40 m também não entra.
Escreva um programa que pergunte a idade e a altura da pessoa e mostre
Pode entrar ou Nao pode entrar.
Resolva com uma condição só, usando and. Quem tem exatamente 12 anos e
exatamente 1,50 m entra.
Rode o programa também com estes valores e confira cada resposta:
| Idade | Altura | Resposta esperada |
|---|---|---|
| 14 | 1.62 | Pode entrar |
| 12 | 1.50 | Pode entrar |
| 14 | 1.45 | Nao pode entrar |
| 10 | 1.70 | Nao pode entrar |
| 11 | 1.49 | Nao pode entrar |
Como deve ficar. Rodando o programa e digitando 30, 1.40,
a tela tem de ficar assim:
# Exercício 04 — a entrada do brinquedo.
idade_minima = 12
altura_minima = 1.50
# TODO: pergunte a idade e a altura da pessoa.
# TODO: junte as duas condicoes com and, num if so.
# TODO: mostre "Pode entrar" ou "Nao pode entrar".
Exercício 05¶
O aplicativo da operadora mostra a qualidade do sinal em palavras, a partir do percentual de intensidade que o celular mede:
| Intensidade | Qualidade |
|---|---|
| 75% ou mais | Otimo |
| de 50% a 74% | Bom |
| de 25% a 49% | Fraco |
| abaixo de 25% | Sem sinal |
Escreva um programa que pergunte o percentual de intensidade e mostre a palavra correspondente.
Como as faixas são "a partir de", use >= e comece pela maior. Na ordem
inversa, o primeiro teste captura todo mundo e as outras três faixas viram
enfeite.
Rode o programa também com estes percentuais e confira cada resposta:
| Percentual | Resposta esperada |
|---|---|
| 100 | Otimo |
| 74 | Bom |
| 50 | Bom |
| 49 | Fraco |
| 25 | Fraco |
| 24 | Sem sinal |
| 0 | Sem sinal |
Como deve ficar. Rodando o programa e digitando 75,
a tela tem de ficar assim:
# Exercício 05 — a qualidade do sinal em palavras.
# TODO: pergunte o percentual de intensidade do sinal.
# TODO: escada de elif com >=, da maior faixa para a menor.
# TODO: mostre a palavra da faixa.
Exercício 06¶
Este exercício é sobre um erro, e é o mais importante da lista.
O programa abaixo deveria dizer se o dia informado é dia útil ou fim de semana.
Ele não dá erro nenhum — e responde fim de semana para qualquer dia que
você digitar, inclusive para quarta.
dia = input("Dia da semana: ")
if dia == "sabado" or "domingo":
print(f"{dia} e fim de semana.")
else:
print(f"{dia} e dia util.")
- Rode-o como está, digitando
quarta, e veja a resposta errada aparecer sem nenhum aviso. - Conserte a condição.
- Escreva, num comentário no fim, por que o original errava.
Guarde este caso junto com o da Lista 03. O sintoma é sempre o mesmo: um dos caminhos do programa nunca acontece, e nada no computador reclama disso.
Como deve ficar. Rodando o programa e digitando quarta,
a tela tem de ficar assim: