Lista 05 · Condicionais¶
Esta é a primeira lista em que o programa deixa de fazer sempre a mesma coisa:
com o if, ele escolhe. Todo exercício aqui é um programa inteiro, com
input(), como nas listas anteriores.
Quase todo erro de if mora na fronteira — no valor exatamente igual ao
limite. Por isso vários enunciados trazem uma tabela de valores para você rodar
o programa mais de uma vez e conferir cada resposta. Rode todos: é ali que o
programa que parece certo se entrega.
Atenção também à indentação: o que está dentro do if só acontece quando a
condição é verdadeira, e o que está fora acontece sempre. Trocar um pelo outro
não dá erro nenhum — só dá resposta errada.
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. Sem rodar, diga o valor de cada expressão, se minutos = 200:
A2. O que este programa imprime?
E se saldo valesse 1?
A3. Este programa não roda. Aponte os dois erros e reescreva-o certo.
A4. Qual a diferença entre estas duas linhas? Uma delas não pode aparecer
dentro de um if.
A5. Este programa avisa para contratar um pacote extra mesmo quando o cliente usou só 12 GB dos 20. Por quê?
franquia_gb = 20
usado_gb = 12
if usado_gb > franquia_gb:
print("Franquia estourada")
print("Contrate um pacote extra")
(Dica: leia a indentação, não as condições.)
A6. Rastreie. Monte a tabela, uma linha por instrução, e diga o que sai:
Parte B · no computador¶
Exercício 01¶
O aplicativo da operadora precisa avisar o cliente quando ele passa da franquia de dados do mês.
Escreva um programa que pergunte quantos GB o cliente já usou e quantos GB o plano dá, e mostre se ele passou ou não da franquia.
Quem usou exatamente a franquia ainda não passou.
Rode o programa também com estes valores e confira cada resposta:
| Usado | Franquia | Resposta esperada |
|---|---|---|
| 21.5 | 20 | passou |
| 19.9 | 20 | não passou |
| 0 | 20 | não passou |
| 4 | 3 | passou |
Como deve ficar. Rodando o programa e digitando 20, 20,
a tela tem de ficar assim:
GB usados no mes: 20
Franquia do plano em GB: 20
Usado: 20.0 GB de 20.0 GB
Voce esta dentro da franquia.
# Exercício 01 — alerta de franquia estourada.
# TODO: pergunte quantos GB o cliente usou.
# TODO: pergunte quantos GB o plano da de franquia.
# TODO: mostre o consumo e, com um if/else, diga se passou ou nao da franquia.
Exercício 02¶
Um cliente mediu a velocidade da internet em dois momentos do dia e quer saber qual foi a melhor.
Escreva um programa que pergunte as duas medições, em Mb/s, e diga qual é a maior — ou avise que as duas deram o mesmo valor.
São três saídas possíveis, e é isso que faz o exercício: a primeira medição ser a maior, a segunda ser a maior, ou as duas serem iguais.
Não use a função pronta max do Python: o exercício é sobre a decisão.
Use exatamente estes textos, para a sua sessão bater com a publicada:
Primeira medicao (Mb/s):
Segunda medicao (Mb/s):
A maior foi a primeira: X Mb/s
A maior foi a segunda: X Mb/s
As duas foram iguais: X Mb/s
O caso do empate é o que pega
Com > sozinho e um else, o empate cai no else e o programa diz que a
segunda foi a maior — o que é falso. O empate precisa de um teste próprio.
Rode também com estes valores e confira cada resposta:
| Medições | Resposta esperada |
|---|---|
| 48.5 e 12.0 | a primeira, 48.5 |
| 12.0 e 48.5 | a segunda, 48.5 |
| 30.0 e 30.0 | iguais, 30.0 |
| 9.9 e 10.0 | a segunda, 10.0 |
Como deve ficar. Rodando o programa e digitando 30.0, 30.0,
a tela tem de ficar assim:
# Exercício 02 — qual medição foi a melhor.
# TODO: pergunte as duas medições, em Mb/s, e converta para float.
# TODO: decida entre três casos — a primeira é maior, a segunda é maior,
# ou as duas são iguais. Cada um tem a sua mensagem.
Exercício 03¶
Um radar multa quem passa de 80 km/h. A multa é de R$ 5 por km/h acima de 80 — quem passou a 90 paga R$ 50.
Escreva um programa que pergunte a velocidade do carro e mostre o valor da multa, com duas casas decimais. Quem não passou de 80 não paga nada: a multa é R$ 0,00.
Cuidado com a fronteira: 80 km/h não é multa.
Rode o programa também com estas velocidades e confira cada resposta:
| Velocidade | Multa esperada |
|---|---|
| 90 | R$ 50,00 |
| 81 | R$ 5,00 |
| 60 | R$ 0,00 |
| 120 | R$ 200,00 |
Como deve ficar. Rodando o programa e digitando 80,
a tela tem de ficar assim:
# Exercício 03 — a multa do radar.
limite = 80
preco_por_km = 5
# TODO: pergunte a velocidade do carro.
# TODO: se passou do limite, cobre 5 reais por km/h excedente; senao, a multa e 0.
# TODO: mostre o valor da multa com duas casas decimais.
Exercício 04¶
A conta de luz tem duas tarifas: quem consome até 150 kWh paga R$ 0,45 por kWh; quem passa disso paga R$ 0,72 por kWh — e a tarifa mais cara vale para o consumo inteiro, não só para o que passou.
Escreva um programa que pergunte o consumo em kWh e mostre o valor a pagar, com duas casas decimais.
Rode o programa com 150 e depois com 151: um kWh a mais quase dobra a conta. É a tarifa toda que muda de faixa.
Rode também com estes consumos e confira cada resposta:
| Consumo | Conta esperada |
|---|---|
| 150 | R$ 67,50 |
| 151 | R$ 108,72 |
| 100 | R$ 45,00 |
| 0 | R$ 0,00 |
| 320 | R$ 230,40 |
Como deve ficar. Rodando o programa e digitando 151,
a tela tem de ficar assim:
# Exercício 04 — a conta de luz em duas faixas.
# TODO: pergunte o consumo em kWh.
# TODO: escolha a tarifa com um if/else (0.45 ate 150 kWh, 0.72 acima).
# TODO: multiplique o consumo pela tarifa e mostre o total com duas casas.
Exercício 05¶
O plano do cliente dá uma franquia de minutos por mês. Cada minuto falado além da franquia custa R$ 0,40.
Escreva um programa que pergunte os minutos falados e os minutos da franquia, e mostre quanto o cliente vai pagar de excedente, com duas casas decimais. Quem ficou dentro da franquia paga R$ 0,00.
Cuidado com o caso de quem falou menos que a franquia: a conta
(falados - franquia) * 0.40 devolveria um valor negativo, e ninguém recebe
dinheiro da operadora por não ter falado.
Rode o programa também com estes valores e confira cada resposta:
| Falados | Franquia | Excedente esperado |
|---|---|---|
| 137 | 100 | R$ 14,80 |
| 100 | 100 | R$ 0,00 |
| 101 | 100 | R$ 0,40 |
| 500 | 200 | R$ 120,00 |
Como deve ficar. Rodando o programa e digitando 90, 100,
a tela tem de ficar assim:
Minutos falados no mes: 90
Minutos da franquia: 100
Minutos excedentes: 0
Valor do excedente: R$ 0.00
# Exercício 05 — o excedente da franquia de minutos.
preco_do_minuto_extra = 0.40
# TODO: pergunte os minutos falados e os minutos da franquia.
# TODO: so ha excedente quando os minutos falados passam da franquia.
# TODO: mostre o valor a pagar com duas casas decimais.
Exercício 06¶
O plano tem franquia de 20 GB. Escreva um programa que pergunte quantos GB o cliente já usou e mostre:
- o percentual da franquia já consumido, com uma casa decimal;
- e, só quando o consumo passar de 80% da franquia, uma linha de alerta.
Quem está abaixo dos 80% não vê alerta nenhum — o programa simplesmente termina.
Como deve ficar. Rodando o programa e digitando 17.4,
a tela tem de ficar assim:
Quantos GB ja usados: 17.4
Voce usou 17.4 GB de 20 GB (87.0%)
ATENCAO: voce ja passou de 80% da franquia.