Lab03 - Estrutura de Decisão
Solução Exercícios com Estruturas de decisão¶
Neste notebook, você encontrará exercícios relacionados a Estruturas de decisão.
Dicas Importantes¶
- Não altere os nomes dos arquivos ou funções: Isso pode fazer com que os testes automáticos falhem, mesmo que sua solução esteja correta.
- Leia os erros com atenção: Eles podem fornecer dicas sobre o que está errado em seu código.
- Peça ajuda: Se estiver tendo dificuldades, não hesite em pedir ajuda ao professor ou colegas.
Exemplo Resolvido:¶
Escreva um programa que receba um valor de temperatura e exibe o estado do clima. Considere:
- temperatura > 25 retorna "quente!"
- temperatura < 18 retorna "frio!"
- 18 <= temperatura <= 25 retorna "ameno!"
In [6]:
Copied!
"""
É fornecida uma estrutura para resolver o problema.
Fique ligado! Você deve seguir essa estrudada para evitar erros durante a execução dos testes de validação com o `pytest`
Escreva a sua resposta dentra da função, na indicação ` # implemente seu código aqui`
"""
def avaliar_temperatura(temp):
# implemente seu código aqui
pass ## quando implementar apague essa linha
"""
Em alguns exercicios é fornecida uma estrutura para você testar e validar seu código inputando a entrada que queira, isso ajuda a validar sua logica de programação
"""
# Teste (para você testar seu código)
valor = float(input("Digite a temperatura: "))
resultado = avaliar_temperatura(valor)
print(f"Hoje o clima está: {resultado}")
"""
É fornecida uma estrutura para resolver o problema.
Fique ligado! Você deve seguir essa estrudada para evitar erros durante a execução dos testes de validação com o `pytest`
Escreva a sua resposta dentra da função, na indicação ` # implemente seu código aqui`
"""
def avaliar_temperatura(temp):
# implemente seu código aqui
pass ## quando implementar apague essa linha
"""
Em alguns exercicios é fornecida uma estrutura para você testar e validar seu código inputando a entrada que queira, isso ajuda a validar sua logica de programação
"""
# Teste (para você testar seu código)
valor = float(input("Digite a temperatura: "))
resultado = avaliar_temperatura(valor)
print(f"Hoje o clima está: {resultado}")
Hoje o clima está: None
In [41]:
Copied!
## uma possivel solução para esse problema
def avaliar_temperatura(temp):
# implemente seu código aqui
if temp > 25:
return "quente!"
elif temp < 18:
return "frio!"
else:
return "ameno!"
# Teste (para você testar seu código)
valor = float(input("Digite a temperatura: "))
resultado = avaliar_temperatura(valor)
print(f"Hoje o clima está: {resultado}")
## uma possivel solução para esse problema
def avaliar_temperatura(temp):
# implemente seu código aqui
if temp > 25:
return "quente!"
elif temp < 18:
return "frio!"
else:
return "ameno!"
# Teste (para você testar seu código)
valor = float(input("Digite a temperatura: "))
resultado = avaliar_temperatura(valor)
print(f"Hoje o clima está: {resultado}")
Hoje o clima está: ameno!
Agora que é com você¶
bom trabalho dev!
Exercicio 1 - Conversor de Notas:¶
Escreva um programa que receba uma nota (0 a 100) e converta conforme o seguinte:
- 90 a 100: A
- 80 a 89: B
- 70 a 79: C
- 60 a 69: D
- Abaixo de 60: F
In [30]:
Copied!
def conversor_notas(nota):
if 90 <= nota <= 100:
return "A"
elif 80 <= nota < 90:
return "B"
elif 70 <= nota < 80:
return "C"
elif 60 <= nota < 70:
return "D"
else:
return "F"
# Teste
nota = float(input("Digite a nota (0 a 100): "))
print(f"A nota convertida é: {conversor_notas(nota)}")
def conversor_notas(nota):
if 90 <= nota <= 100:
return "A"
elif 80 <= nota < 90:
return "B"
elif 70 <= nota < 80:
return "C"
elif 60 <= nota < 70:
return "D"
else:
return "F"
# Teste
nota = float(input("Digite a nota (0 a 100): "))
print(f"A nota convertida é: {conversor_notas(nota)}")
A nota convertida é: B
In [ ]:
Copied!
def maior_numero(a, b, c):
if a > b and a > c:
return a
elif b > a and b > c:
return b
else:
return c
# Teste
num1 = float(input("Digite o primeiro número: "))
num2 = float(input("Digite o segundo número: "))
num3 = float(input("Digite o terceiro número: "))
print(f"O maior número é: {maior_numero(num1, num2, num3)}")
def maior_numero(a, b, c):
if a > b and a > c:
return a
elif b > a and b > c:
return b
else:
return c
# Teste
num1 = float(input("Digite o primeiro número: "))
num2 = float(input("Digite o segundo número: "))
num3 = float(input("Digite o terceiro número: "))
print(f"O maior número é: {maior_numero(num1, num2, num3)}")
In [ ]:
Copied!
def verificar_paridade(numero):
return "par" if numero % 2 == 0 else "ímpar"
# Teste
num = float(input("Digite um número: "))
print(f"O número é {verificar_paridade(num)}")
def verificar_paridade(numero):
return "par" if numero % 2 == 0 else "ímpar"
# Teste
num = float(input("Digite um número: "))
print(f"O número é {verificar_paridade(num)}")
In [ ]:
Copied!
def calcular_preco(produto_preco, quantidade):
if quantidade > 10:
return produto_preco * quantidade * 0.9
else:
return produto_preco * quantidade
# Teste
preco = float(input("Digite o preço do produto: "))
quant = int(input("Digite a quantidade comprada: "))
print(f"O valor total é: {calcular_preco(preco, quant):.2f}")
def calcular_preco(produto_preco, quantidade):
if quantidade > 10:
return produto_preco * quantidade * 0.9
else:
return produto_preco * quantidade
# Teste
preco = float(input("Digite o preço do produto: "))
quant = int(input("Digite a quantidade comprada: "))
print(f"O valor total é: {calcular_preco(preco, quant):.2f}")
In [ ]:
Copied!
def calculadora(num1, num2, operacao):
if operacao == "soma":
return num1 + num2
elif operacao == "subtração":
return num1 - num2
elif operacao == "multiplicação":
return num1 * num2
elif operacao == "divisão":
if num2 == 0:
return "Erro: Divisão por zero"
return num1 / num2
else:
return "Operação inválida"
# Teste
n1 = float(input("Digite o primeiro número: "))
n2 = float(input("Digite o segundo número: "))
op = input("Digite a operação (soma, subtração, multiplicação, divisão): ")
print(f"Resultado: {calculadora(n1, n2, op)}")
def calculadora(num1, num2, operacao):
if operacao == "soma":
return num1 + num2
elif operacao == "subtração":
return num1 - num2
elif operacao == "multiplicação":
return num1 * num2
elif operacao == "divisão":
if num2 == 0:
return "Erro: Divisão por zero"
return num1 / num2
else:
return "Operação inválida"
# Teste
n1 = float(input("Digite o primeiro número: "))
n2 = float(input("Digite o segundo número: "))
op = input("Digite a operação (soma, subtração, multiplicação, divisão): ")
print(f"Resultado: {calculadora(n1, n2, op)}")
In [ ]:
Copied!
def determinar_quadrante(x, y):
if x > 0 and y > 0:
return "Quadrante I"
elif x < 0 and y > 0:
return "Quadrante II"
elif x < 0 and y < 0:
return "Quadrante III"
elif x > 0 and y < 0:
return "Quadrante IV"
elif x == 0 and y == 0:
return "Origem"
else:
return "Sobre um dos eixos"
# Teste
coord_x = float(input("Digite a coordenada x: "))
coord_y = float(input("Digite a coordenada y: "))
print(f"O ponto está no {determinar_quadrante(coord_x, coord_y)}")
def determinar_quadrante(x, y):
if x > 0 and y > 0:
return "Quadrante I"
elif x < 0 and y > 0:
return "Quadrante II"
elif x < 0 and y < 0:
return "Quadrante III"
elif x > 0 and y < 0:
return "Quadrante IV"
elif x == 0 and y == 0:
return "Origem"
else:
return "Sobre um dos eixos"
# Teste
coord_x = float(input("Digite a coordenada x: "))
coord_y = float(input("Digite a coordenada y: "))
print(f"O ponto está no {determinar_quadrante(coord_x, coord_y)}")
In [ ]:
Copied!
def analisar_desempenho(nota1, nota2, nota3):
media = (nota1 + nota2 + nota3) / 3
print(media)
if media >= 70 and nota1 >= 50 and nota2 >= 50 and nota3 >= 50:
return "Aprovado"
elif media < 70 and ((nota1 < 50 and (nota2 < 50 or nota3 < 50)) or (nota2 < 50 and nota3 < 50 )):
return "Reprovado"
else:
return "Recuperação"
# Teste
nota_1 = float(input("Digite a primeira nota: "))
nota_2 = float(input("Digite a segunda nota: "))
nota_3 = float(input("Digite a terceira nota: "))
print(f"O aluno foi {analisar_desempenho(nota_1, nota_2, nota_3)}")
def analisar_desempenho(nota1, nota2, nota3):
media = (nota1 + nota2 + nota3) / 3
print(media)
if media >= 70 and nota1 >= 50 and nota2 >= 50 and nota3 >= 50:
return "Aprovado"
elif media < 70 and ((nota1 < 50 and (nota2 < 50 or nota3 < 50)) or (nota2 < 50 and nota3 < 50 )):
return "Reprovado"
else:
return "Recuperação"
# Teste
nota_1 = float(input("Digite a primeira nota: "))
nota_2 = float(input("Digite a segunda nota: "))
nota_3 = float(input("Digite a terceira nota: "))
print(f"O aluno foi {analisar_desempenho(nota_1, nota_2, nota_3)}")
In [ ]:
Copied!
def verificar_triangulo(lado1, lado2, lado3):
if (lado1 + lado2 > lado3) and (lado1 + lado3 > lado2) and (lado2 + lado3 > lado1):
if lado1 == lado2 == lado3:
return "Equilátero"
elif lado1 == lado2 or lado1 == lado3 or lado2 == lado3:
return "Isósceles"
else:
return "Escaleno"
else:
return "Não forma um triângulo"
# Teste
l1 = float(input("Digite o primeiro lado: "))
l2 = float(input("Digite o segundo lado: "))
l3 = float(input("Digite o terceiro lado: "))
print(f"O triângulo é {verificar_triangulo(l1, l2, l3)}")
def verificar_triangulo(lado1, lado2, lado3):
if (lado1 + lado2 > lado3) and (lado1 + lado3 > lado2) and (lado2 + lado3 > lado1):
if lado1 == lado2 == lado3:
return "Equilátero"
elif lado1 == lado2 or lado1 == lado3 or lado2 == lado3:
return "Isósceles"
else:
return "Escaleno"
else:
return "Não forma um triângulo"
# Teste
l1 = float(input("Digite o primeiro lado: "))
l2 = float(input("Digite o segundo lado: "))
l3 = float(input("Digite o terceiro lado: "))
print(f"O triângulo é {verificar_triangulo(l1, l2, l3)}")
In [ ]:
Copied!
def e_bissexto(ano):
if (ano%4==0 and ano%100!=0) or (ano%400==0):
return True
else:
return False
ano= int(input("Digite o ano: "))
print(f"O ano {ano} é bissexto? {e_bissexto(ano)}")
def e_bissexto(ano):
if (ano%4==0 and ano%100!=0) or (ano%400==0):
return True
else:
return False
ano= int(input("Digite o ano: "))
print(f"O ano {ano} é bissexto? {e_bissexto(ano)}")
In [ ]:
Copied!
# # Função para verificar se um ano é bissext
# def e_bissexto(ano):
# return (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0)
def verificar_data_valida(data):
# Dividir a string de entrada e verificar se está no formato correto
partes = data.split("/")
if len(partes) == 3:
dia, mes, ano = partes
else:
return False
if len(dia)!= 2 or len(mes)!= 2 or len(ano) != 4:
return False
else:
dia = int(dia)
mes = int(mes)
ano = int(ano)
# Verifica o dia
if (dia >=1 and dia <=31) and (mes >=1 and mes <=12) and (ano > 0 ):
# Verifica fevereiro
if mes==2:
if e_bissexto(ano) and dia > 29:
return False
elif not(e_bissexto(ano)) and dia >28:
return False
# verifica os outros meses se estão ok com 31
if (mes == 4 or mes == 6 or mes == 9 or mes ==11) and dia ==31:
return False
else:
return False
return True
# Teste
data = str(input("Digite a data no formato dd/mm/aaaa: "))
print(f"{data} é valida? {verificar_data_valida(data)}")
# # Função para verificar se um ano é bissext
# def e_bissexto(ano):
# return (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0)
def verificar_data_valida(data):
# Dividir a string de entrada e verificar se está no formato correto
partes = data.split("/")
if len(partes) == 3:
dia, mes, ano = partes
else:
return False
if len(dia)!= 2 or len(mes)!= 2 or len(ano) != 4:
return False
else:
dia = int(dia)
mes = int(mes)
ano = int(ano)
# Verifica o dia
if (dia >=1 and dia <=31) and (mes >=1 and mes <=12) and (ano > 0 ):
# Verifica fevereiro
if mes==2:
if e_bissexto(ano) and dia > 29:
return False
elif not(e_bissexto(ano)) and dia >28:
return False
# verifica os outros meses se estão ok com 31
if (mes == 4 or mes == 6 or mes == 9 or mes ==11) and dia ==31:
return False
else:
return False
return True
# Teste
data = str(input("Digite a data no formato dd/mm/aaaa: "))
print(f"{data} é valida? {verificar_data_valida(data)}")
In [ ]:
Copied!
def converter_temperatura(temp, escala):
if escala == "C":
fahrenheit = (temp * 9/5) + 32
kelvin = temp + 273.15
return f"Fahrenheit: {fahrenheit}°F, Kelvin: {kelvin}K"
elif escala == "F":
celsius = (temp - 32) * 5/9
kelvin = celsius + 273.15
return f"Celsius: {celsius}°C, Kelvin: {kelvin}K"
elif escala == "K":
celsius = temp - 273.15
fahrenheit = (celsius * 9/5) + 32
return f"Celsius: {celsius}°C, Fahrenheit: {fahrenheit}°F"
else:
return "Escala inválida"
# Teste
temperatura = float(input("Digite a temperatura: "))
esc = input("Digite a escala (C, F, K): ").upper()
print(converter_temperatura(temperatura, esc))
def converter_temperatura(temp, escala):
if escala == "C":
fahrenheit = (temp * 9/5) + 32
kelvin = temp + 273.15
return f"Fahrenheit: {fahrenheit}°F, Kelvin: {kelvin}K"
elif escala == "F":
celsius = (temp - 32) * 5/9
kelvin = celsius + 273.15
return f"Celsius: {celsius}°C, Kelvin: {kelvin}K"
elif escala == "K":
celsius = temp - 273.15
fahrenheit = (celsius * 9/5) + 32
return f"Celsius: {celsius}°C, Fahrenheit: {fahrenheit}°F"
else:
return "Escala inválida"
# Teste
temperatura = float(input("Digite a temperatura: "))
esc = input("Digite a escala (C, F, K): ").upper()
print(converter_temperatura(temperatura, esc))