APRENDA PYTHON VOL 3 – ESTRUTURA CONDICIONAL ENCADEADA
INSTITUTO DE COMPUTAÇÃO – ICOMP – UFAM
Exercícios resolvidos de Linguagem Python.
Cardoso, A. K. S.
1 - DE VOLTA À ÁREA DO TRIÂNGULO
Escreva um programa que leia as medidas dos três lados A, B, C de um
triângulo qualquer. Em seguida, ele deve verificar se as medidas são válidas
(condição de existência de um triângulo). Se as medidas forem válidas o
programa deve calcular a área do triângulo.
Dados de entrada:
1. Lado A
2. Lado B
3. Lado C
Como saída, o programa deverá imprimir a seguinte mensagem:
Entradas: A, B, C
Area: X
No comando print as letras A, B, C devem ser substituídas pelos valores de
entrada informados pelo usuário. Se as entradas forem válidas, substitua a
letra X pelo valor da área, com até três casas decimais de precisão. Caso
contrário, substitua a letra X pela seguinte mensagem: invalida.
Leia as dicas para verificar as condições em que três valores representam
medidas válidas de um triângulo.
Dicas
1. O programa está incompleto. Substitua as expressões ___COMPLETE
AQUI___ por comandos que façam o programa executar corretamente.
2. A solução proposta adota os seguintes passos:
1. Ler o valor de cada lado do triângulo: A, B, C.
2. Verificar se todos os valores fornecidos são positivos.
1. Se verdade, verificar se as medidas fornecidas
correspondem às de um triângulo, ou seja, se a soma dos
dois lados menores é maior que o lado maior.
2. O teste deve ser verdadeiro para todas as três
combinações possíveis.
3. Se todos os testes forem bem sucedidos, calcule a área e exiba a
mensagem.
4. Se pelo menos um teste falhar, apresente a mensagem de erro
3. Execute o programa para todos o casos de teste apresentados.
2 - QUAL O TIPO DE TRIÂNGULO?
Escreva um programa que leia três números reais, correspondentes às
medidas dos lados de um triângulo, em ordem qualquer.
Dados de entrada:
1. Lado A
2. Lado B
3. Lado C
Como saída, o programa deverá imprimir:
Entradas: A, B, C
Tipo de triangulo: X
No comando print() as letras A, B, C devem ser substituídas pelos valores de
entrada informados pelo usuário. Substitua a letra X por um dos seguintes
valores:
• equilatero, se todos os três lados forem iguais;
• isosceles, se apenas dois lados forem iguais;
• escaleno, se nenhum par de lados forem iguais;
• invalido, se pelo menos um dos lados for negativo ou se os três lados
não formarem um triângulo.
Leia as dicas para verificar as condições em que três valores representam
medidas válidas de um triângulo.
Dicas
1. Atenção para o uso de caracteres maiúsculos e minúsculos. Não use
acentos, para evitar erros.
2. Condições de existência de um triângulo:
1. Todos os lados devem ser positivos.
2. A medida de qualquer um dos lados deve menor que a soma das
medidas dos outros dois.
3. Execute o programa para todos o casos de teste apresentados.
3 - QUAL SUA CASA EM GOT?
Elabore um programa que leia a descrição do brasão de uma das casas da
série de TV "Guerra dos Tronos", conforme tabela abaixo. Como saída,
determine o nome da casa correspondente.
• Se a entrada for uma descrição válida, então imprima:
Entrada: X
Casa: Y
• Se a entrada for uma casa não listada na tabela, imprima:
Entrada: X
Brasao invalido
Substitua a letra X pela entrada inserida e a letra Y pela casa correspondente.
Brasão Casa
lobo Stark
leao Lannister
veado Baratheon
dragao Targaryen
rosa Tyrell
sol Martell
lula Greyjoy
esfolado Bolton
turta Tully
Dicas
1. Utilize condições encadeadas (elif).
2. Use letras maiúsculas e minúsculas da mesma maneira como descrita
no enunciado. Não use acentos.
3. Lembre-se que "x" (com aspas) indica o caractere xis, ao passo
que x (sem aspas) indica o nome de uma variável chamada x.
4 - DOIS INTERVALOS DE VALORES
Considere dois intervalos numéricos sobre a reta real: [a,b][a,b] e [c,d][c,d].
Escreva um programa que verifique se existe interseção (pelo menos um ponto
em comum) entre os intervalos.
• Se houver interseção, o programa deverá imprimir:
Intervalo 1: a, b
Intervalo 2: c, d
Ha intersecao
• Se não houver interseção, o programa deverá imprimir:
Intervalo 1: a, b
Intervalo 2: c, d
Nao ha intersecao
• Por fim, se as entradas forem inválidas, o programa deverá imprimir:
Intervalo 1: a, b
Intervalo 2: c, d
Entradas invalidas
Nas mensagens, substitua as letras a, b, c, d pelos valores fornecidos como
entrada.
Dicas
1. Leia os números reais na ordem solicitada: aa, bb, cc, dd.
2. Primeiro, verifique se os intervalos são válidos, ou seja,
se b>ab>a e d>cd>c.
3. Não pressuponha nada com respeito à posição relativa entre os
intervalos [a,b][a,b] e [c,d][c,d]. Ou seja, eles podem estar situados antes
ou depois um do outro.
4. Antes de programar, teste alguns exemplos numéricos em um rascunho,
para encontrar uma regra geral.
5. Alguns dos operadores booleanos (and, or, not) serão úteis.
6. Use letras maiúsculas e minúsculas exatamente conforme o
enunciado. Não use acentos.
5 - INTERVALO DE VALORES
Considere dois números reais aa e bb, sendo b>a. Um número real xx pertence
ao intervalo [a,b][a,b] se a ≤ x ≤ b
Escreva um programa que leia os números reais x, a, b, nesta ordem.
• Se x pertencer ao intervalo, imprima a seguinte mensagem:
x pertence ao intervalo a, b
• Caso contrário, imprima a seguinte mensagem:
x nao pertence ao intervalo a, b
• Se as entradas forem inválidas, ou seja, se b ≤ a, imprima a seguinte
mensagem:
Entradas a e b invalidas
Nas mensagens, substitua as letras x, a, b pelos valores fornecidos como
entrada.
Dicas
1. Note que as três entradas são números reais (float).
2. Utilize condições encadeadas (if/elif).
3. Alguns dos operadores booleanos (and, or, not) serão úteis.
4. Não confunda a vírgula que deve ser impressa (string) com a vírgula que
separa um argumento de outro dentro da função print().
6 - BOATE
Em uma boate, o preço da entrada varia conforme o dia da semana. Nas
segundas, terças e quintas, ela normalmente oferece um desconto de 25%
sobre o preço normal de entrada. Porém, nos dias de músicas ao vivo,
independentemente do dia da semana, é acrescida uma taxa fixa de R$20,00
ao preço da entrada.
Elabore um programa que calcule o preço final a ser pago para entrar na
boate, a partir dos seguintes valores, nesta ordem:
1. O preço normal da entrada (em reais)
2. O dia da semana (1 para domingo, 2 para segunda, ..., 7 para sábado)
3. É dia de música ao vivo? (S ou N)
Validação dos dados de entrada
Note que:
• O preço normal deve ser maior ou igual a zero
• Dias da semana só podem assumir valores inteiros de 1 a 7
• Música ao vivo só pode ser S ou N.
Se o usuário inserir valores inválidos, imprima a seguinte mensagem:
Entradas: X , Y , Z
Dados invalidos
Se as entradas forem válidas, imprima a seguinte mensagem:
Entradas: X , Y , Z
Valor a pagar: R$ W
Nas mensagens, substitua as letras X, Y, Z e W pelos valores correspondentes.
7 - PLANTIO DE GRAMA
Objetivo: Determinar o valor do serviço.
A floricultura Sempre Verde oferece o serviço de plantio de grama. O custo do
serviço depende da área a ser coberta e é dado pela seguinte fórmula:
Valor = Área * Custo + Fertilizante
O custo e o valor do adubo variam conforme a tabela a seguir:
Área (m2) Custo Fertilizante
[0, 100] R$ R$ 100,00
2,00
]100, 2500] R$ R$ 150,00
1,80
]2500, 10000] R$ R$ 200,00
1,50
]10000, ∞[ R$ R$ 250,00
1,20
Escreva um programa que leia a área a ser coberta (em m2) e determine o
valor total a ser cobrado pela empresa Sempre Verde.
Dicas
1. Verifique se as variáveis associadas ao problema são reais ou inteiras.
2. O valor de saída deve ser arredondado com até duas casas decimais.
3. Considere que a entrada do programa sempre será um valor maior ou
igual a zero.
Exemplos adicionais:
ENTRADA DE EXEMPLO (1):
SAÍDA DE EXEMPLO (1):
102.0
ENTRADA DE EXEMPLO (2):
10001
SAÍDA DE EXEMPLO (2):
12251.2
8 - SUSHI – INGREDIENTE
Objetivo: Calcular a quantidade necessária de um ingrediente.
Para fazer um sushi, vários ingredientes são utilizados.
A tabela a seguir mostra o ingrediente e a quantidade necessária para
preparar UMA receita.
Ingrediente Quantidade
(gramas)
ARROZ 500
CENOURA 100
KAMPYO 20
NORI 50
OMELETE 200
PEPINO 150
SALMAO 300
SHITAKE 150
Escreva um programa que leia:
1. O nome desse ingrediente
2. A quantidade de receitas que se deseja preparar (inteiro)
Como saída, determine a quantidade necessária do ingrediente para preparar o
número de receitas desejado, em gramas.
Se a quantidade de receitas for um valor menor que zero ou maior que 50, ou
se o ingrediente não estiver listado, a saída deve ser “Entrada invalida”.
Dicas
1. O valor de entrada e de saída devem ser inteiros.
2. Atenção para o uso de caracteres MAIÚSCULOS. Não use acentos.
9 - FERTILIZAÇÃO AÉREA – ESTENDIDA
Objetivo: Determinar o valor do serviço.
A empresa de aviação agrícola Agro Nomo oferece um serviço de aplicação de
fertilizantes. O custo do serviço depende da área da plantação a ser fertilizada
e é dado pela seguinte fórmula:
Valor = Área * Custo + Fertilizante
O custo e o valor do fertilizante variam conforme a tabela a seguir:
Área (ha) Custo Fertilizante
[0, 10000] R$ R$ 100,00
6,00
]10000, R$ R$ 150,00
20000] 5,50
]20000, R$ R$ 200,00
30000] 5,00
]30000, ∞[ R$ R$ 250,00
4,50
Escreva um programa que leia a área a ser fertilizada (em hectares)
e determine o valor total a ser cobrado pela empresa Agro
Nomo, arredondado para duas casas decimais..
Dicas
1. Verifique se as variáveis associadas ao problema são reais ou inteiras.
2. Considere que a entrada do programa sempre será um valor maior ou
igual a zero.
10 - FUNÇÃO C
Considere a seguinte função f(x):
Faça um programa que leia o valor de x e retorne o valor de f(x) baseado na
definição acima. Observe que a função não está definida para todos os valores
reais. Caso o usuário entre como um valor de x que não pertence ao domínio da
Função, o programa deve gerar como saída a mensagem ‘entrada invalida’.
Dicas
1. Atenção para o uso de caracteres maiúsculos e minúsculos. Não use
acentos, para evitar erros.
2. Alguns dos operadores booleanos (and, or, not) serão úteis.
3. Imprima saída com 4 casas decimais (use a função round()).
11 - ESCOLHAS: CATEGORIA DE PESOS - A
Um campeonato de luta tem 3 categorias de peso masculino, e mais 3
categorias de peso feminino. Na divisão masculina, os lutadores peso pesado
são conhecidos pelo poder devastador dos seus socos, e o lutadores mais
leves são conhecidos pela rapidez e agilidade. Os lutadores só podem competir
na sua categoria de peso, e para mudar de categoria, eles têm que ganhar ou
perder peso, o que os leva muitas vezes a perder rapidez ou perder força.
O programa deverá ler as duas informações, nesta ordem:
1. O gênero do lutador (masculino ou feminino).
2. O peso do lutador.
Como saída, o programa deve informar a categoria do lutador de acordo com a
seguinte definição:
Para mulheres, as opções são:
1. Peso Pena Feminino (acima de 61.0 até 66.0 Kg)
2. Peso Galo Feminino (acima de 52.0 até 61.0 Kg)
3. Peso Palha Feminino (até 52.0 Kg)
Para os Homens, as opções são:
1. Peso Pesado (acima de 93.0 até 120.0 Kg)
2. Peso Meio Pesado (acima de 84.0 até 93.0 Kg)
3. Peso Médio (de 78.0 até 84.0 Kg)
Se as entradas forem inválidas (qualquer uma das duas), imprimir a seguinte
mensagem: “categoria invalida”.
Dicas
DICAS:
1. Atenção para o uso de caracteres maiúsculos e minúsculos. Não use
acentos, para evitar erros.
2. Use o método .lower() após o final do nome da string para converter
todas as suas letras em MINÚSCULAS. O ponto e os parênteses são
necessários!
3. Alguns dos operadores booleanos (and, or, not) serão úteis.
4. Considere os intervalos de pesos do enunciado. Intervalos diferentes do
enunciado devem ser considerados como entrada inválida, ou
seja, categoria inválida.
5. Verifique se as entradas (pesos) são do tipo inteiro ou float.
12 - ÍNDICE DE MASSA CORPORAL (IMC)
Escreva um programa que leia a idade e o índice de massa corporal
(IMC) de uma pessoa, nessa ordem. Como saída, determine o risco de
problemas cardíacos dessa pessoa, conforme a tabela a seguir:
Idade
< 45 ≥ 45
< 22,0 Baixo Médio
IMC
≥ 22,0 Médio Alto
Validação dos dados
Verifique se os dados informados são válidos. Se a idade for menor ou igual a
zero ou maior que 130 anos, ou se o IMC for menor ou igual a zero, imprima:
Entradas: X anos e IMC Y
Dados invalidos
Se as entradas forem válidas, imprimia:
Entradas: X anos e IMC Y
Risco: Z
Nas mensagens de saída, substitua as letras X, Y e Z pelos valores fornecidos.
Dicas
1. Use condições encadeadas (if/elif).
2. Atenção para o uso de caracteres maiúsculos e minúsculos. Não use
acentos.
3. Alguns dos operadores booleanos (and, or, not) serão úteis.
13 - FATOR DE FRIO DO VENTO
A sensação de frio é determinada não só pela temperatura, mas também pela
velocidade do vento, umidade relativa do ar e brilho do sol. Uma das formas de
calcular a sensação de frio σσ envolve a seguinte fórmula:
σ=13,12+0,6215⋅Tar−(11,37⋅v0,16)+(0,3965⋅Tar⋅v0,16),
onde:
• σ representa a sensação de frio
• v representa a velocidade de vento em km/h
• Tar representa a temperatura do ar em graus Celsius (C)
Essa fórmula é definida apenas para temperaturas entre -50°C e 10°C, e
velocidade acima de 4,8 km/h.
Escreva um programa que leia a temperatura em Celsius e a velocidade do
vento em km/h.
• Se os valores de entrada forem válidos, o programa deverá calcular e
exibir o valor de σ, com até quatro casas decimais de precisão.
• Se o valor da temperatura do ar for inválido, imprima: Temperatura
invalida
• Se o valor da velocidade for inválido, imprima: Velocidade invalida
Dicas
1. Atenção para a ordem de leitura de valores.
2. Use os operadores booleanos (and, or).
3. Use o comando round(x, n) para arredondar um valor x com
até n casas decimais.
14 - POSIÇÃO DO PONTO
Considere uma reta que parte do ponto p0(x0,y0) ao ponto p1(x1,y1). Dado um
ponto p2(x2,y2), pode-se decidir se p2 está à esquerda, à direita ou sobre a reta
(veja a figura), com base na seguinte condição cc:
c=(x1−x0)⋅(y2−y0)−(x2−x0)⋅(y1−y0)
A localização de p2 é definida pelas seguinte regras:
• Se c<0, p2 está à direita da reta
• Se c>0, p2 está à esquerda da reta
• Se c=0, p2 está sobre a reta
Escreva um programa que leia as coordenadas x e y de cada um dos três
pontos p0, p1 e p2, um par (xi, yi) por vez. O programa deverá calcular o valor
de c e imprimir a localização de p2:
• A direita da reta
• A esquerda da reta
• Sobre a reta
Fonte: Liang. Introduction to Programming Using Python. Pearson, 2013.
Dicas
1. Atenção para a ordem de leitura de valores.
2. Não se limite ao caso de exemplo. Teste as diversas possibilidades de
entradas e saídas.
15 - PASSAGEM DE BARCO
O preço da passagem de barco, partindo de Manaus, varia conforme o destino
desejado e se o passageiro fecha ou não um pacote de ida-e-volta. Escreva um
programa que leia as seguintes informações, nesta ordem:
1. O nome da cidade de destino.
2. Se o percurso é somente de ida ou ida-e-volta.
Como saída, imprima o preço da passagem conforme a tabela abaixo. Se a
cidade de destino não estiver na relação abaixo, imprima: Destino inexistente
Ida-e-volta
Destino Ida (R$)
(R$)
Belém 350,00 650,00
Borba 80,00 152,00
Coari 106,00 199,00
Humaitá 200,00 390,00
Manicoré 150,00 280,00
Maués 100,00 190,00
Dicas
1. Atenção para o tipo das entradas e saídas (inteiro, real, string).
2. Não utilize acentos.
3. Uso o ponto para separar a parte inteira da fracionária em número reais.
16 - CONTRACHEQUE
Em uma empresa, o salário líquido dos funcionários é calculado em função de
dois descontos: a contribuição previdenciária e o imposto de renda. Dado o
salário bruto do funcionário, a contribuição previdenciária é calculada de acordo
com a seguinte tabela:
Salário bruto Alíquota
Até R$ 1.659,38 8%
De R$ 1.659,39 a R$
9%
2.765,66
De R$ 2.765,67 a R$
11%
5.531,31
Desconto fixo de R$
Acima de R$ 5.531,31
608,44
Após o desconto da contribuição previdenciária, o valor restante é então
utilizado para calcular o desconto do imposto de renda, com base nesta tabela:
Salário base Alíquota de desconto
Até R$ 1.903,98 Isento
De R$ 1.903,99 a R$
7,5%
2.826,65
De R$ 2.826,66 a R$
15%
3.751,05
De R$ 3.751,06 a R$
22,5%
4.664,68
Acima de R$ 4.664,68 27,5%
Escreva um programa que leia o salário bruto de uma pessoa, e aplique os
dois descontos. Como saída, imprima a seguinte:
Salario liquido = R$ X
Dicas
1. Primeiro calcule a contribuição previdenciária e desconte do salário
bruto. Depois, use o valor restante para determinar a o desconto do
imposto de renda. Por fim, subtraia esse valor e determine o valor do
salário líquido.
2. Use o comando round(x, n) para arredondar a resposta x com até
2 casas decimais.
3. Use o operador lógico (and) para a comparação entre as diferenças.