diff --git a/.github/workflows/corretor_de_exercicios_secao_01.yml b/.github/workflows/corretor_de_exercicios_secao_01.yml index 0e9f512f0..ee94d6c3a 100644 --- a/.github/workflows/corretor_de_exercicios_secao_01.yml +++ b/.github/workflows/corretor_de_exercicios_secao_01.yml @@ -90,4 +90,79 @@ jobs: - name: Correção do Exercício 01 da seção de Estrutura de Decisão if: always() run: | + - name: Correção do Exercício 01 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_01_alo_mundo.py + - name: Correção do Exercício 01 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_02_escreva_um_numero.py + - name: Correção do Exercício 03 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_03_imprima_soma_de_dois_numeros.py + - name: Correção do Exercício 04 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_04_notas_bimestrais.py + - name: Correção do Exercício 05 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_05_metros_para_centimetros.py + - name: Correção do Exercício 06 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_06_area_circulo.py + - name: Correção do Exercício 07 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_07_area_quadrado.py + - name: Correção do Exercício 08 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_08_horas_trabalhadas_mes.py + - name: Correção do Exercício 09 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_09_fahrenheit_para_celsius.py + - name: Correção do Exercício 10 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_10_celsius_para_fahrenheit.py + - name: Correção do Exercício 11 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_11_contas_matematicas.py + - name: Correção do Exercício 12 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_12_peso_ideal.py + - name: Correção do Exercício 13 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_13_peso_ideal_mulher_e_homem.py + - name: Correção do Exercício 14 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_14_joao_papo_de_pescador.py + - name: Correção do Exercício 15 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_15_clt_onerosa.py + - name: Correção do Exercício 16 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_16_loja_de_tintas_simples.py + - name: Correção do Exercício 17 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_17_loja_de_tintas_complexa.py + - name: Correção do Exercício 18 da seção de Estrutura Sequencial + if: always() + run: | + python -m doctest -f secao_01_estrutura_sequencial\ex_18_tempo_de_download.py + + + diff --git a/.github/workflows/corretor_de_exercicios_secao_02.yml b/.github/workflows/corretor_de_exercicios_secao_02.yml index 2a76074a7..608270c88 100644 --- a/.github/workflows/corretor_de_exercicios_secao_02.yml +++ b/.github/workflows/corretor_de_exercicios_secao_02.yml @@ -127,3 +127,79 @@ jobs: if: always() run: | python -m doctest -f secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py + - name: Correção do Exercício 02 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_02_positivo_ou_negativo.py + - name: Correção do Exercício 01 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_01_imprimir_maior_numero.py + - name: Correção do Exercício 03 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_03_F_ou_M.py + - name: Correção do Exercício 04 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_04_vogal_ou_consoante.py + - name: Correção do Exercício 05 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_05_notas_parciais.py + - name: Correção do Exercício 06 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_06_maior_numero_de_3_numeros.py + - name: Correção do Exercício 07 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_07_maior_e_menor_numero_de_3_numeros.py + - name: Correção do Exercício 08 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_08_escolha_de_produto.py + - name: Correção do Exercício 09 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_09_numeros_decrescentes.py + - name: Correção do Exercício 10 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_10_cumprimento_em_turno.py + - name: Correção do Exercício 11 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_11_salario_tabajara.py + - name: Correção do Exercício 12 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_12_clt_assalto.py + - name: Correção do Exercício 13 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_13_dia_da_semana.py + - name: Correção do Exercício 14 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_14_atribuicoes_de_conceitos.py + - name: Correção do Exercício 15 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_15_triangulo.py + - name: Correção do Exercício 16 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_16_equacao_segundo_grau.py + - name: Correção do Exercício 17 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_17_ano_bissexto.py + - name: Correção do Exercício 18 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_18_validador_de_data.py + - name: Correção do Exercício 20 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao\ex_20_3_notas_parciais.py diff --git a/secao_01_estrutura_sequencial/ex_01_alo_mundo.py b/secao_01_estrutura_sequencial/ex_01_alo_mundo.py index b9b0821a6..025c35564 100644 --- a/secao_01_estrutura_sequencial/ex_01_alo_mundo.py +++ b/secao_01_estrutura_sequencial/ex_01_alo_mundo.py @@ -12,4 +12,5 @@ def ola_mundo(): """Escreva aqui em baixo a sua solução""" + print("Olá Mundo") diff --git a/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py b/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py index 8c3d45dd4..1170e41eb 100644 --- a/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py +++ b/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py @@ -11,6 +11,15 @@ """ -def escreva_um_numero(): +def escreva_um_numero(num): """Escreva aqui em baixo a sua solução""" + return print(f"O número informado foi {num}") +while True: + try: + num = float(input("Insira um número: ")) + break + except ValueError: + print("Insira um número válido!") + +escreva_um_numero(num) diff --git a/secao_01_estrutura_sequencial/ex_03_imprima_soma_de_dois_numeros.py b/secao_01_estrutura_sequencial/ex_03_imprima_soma_de_dois_numeros.py index b842fd8b7..a7d461016 100644 --- a/secao_01_estrutura_sequencial/ex_03_imprima_soma_de_dois_numeros.py +++ b/secao_01_estrutura_sequencial/ex_03_imprima_soma_de_dois_numeros.py @@ -13,5 +13,16 @@ """ -def imprima_a_soma_de_dois_numeros(): +def imprima_a_soma_de_dois_numeros(x, y): """Escreva aqui em baixo a sua solução""" + return print(f"A soma dos dois números informados é {x+y}") + +while True: + try: + num1 = int(input("Insira um número inteiro: ")) + num2 = int(input("Insira outro número inteiro: ")) + break + + except ValueError: + print("Insira um número inteiro válido") +imprima_a_soma_de_dois_numeros(num1, num2) \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py b/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py index a1b189cd5..a6cea1a18 100644 --- a/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py +++ b/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py @@ -13,6 +13,22 @@ """ -def calcular_media(): +def calcular_media(notas): """Escreva aqui em baixo a sua solução""" + return sum(notas) / len(notas) + +while True: + try: + n1 = float(input("Insira a nota do primeiro bimestre: ")) + n2 = float(input("Insira a nota do segundo bimestre: ")) + n3 = float(input("Insira a nota do terceiro bimestre: ")) + n4 = float(input("Insira a nota do quarto bimestre: ")) + break + except ValueError: + print("Insira notas válidas!") + +notas = [n1, n2, n3, n4] +media = calcular_media(notas) +print(f"A média anual é {media:.1f}") + diff --git a/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py b/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py index 315e5392d..540e8e9f2 100644 --- a/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py +++ b/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py @@ -15,5 +15,11 @@ """ -def converter_metros_para_centimetros(): +def converter_metros_para_centimetros(metros): """Escreva aqui em baixo a sua solução""" + return metros * 100 + +metros = float(input("Digite a medida em metros: ")) +centimetros = converter_metros_para_centimetros(metros) + +print(f"Transformando para centímetros dá {centimetros} cm.") \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_06_area_circulo.py b/secao_01_estrutura_sequencial/ex_06_area_circulo.py index 840559026..632bc5316 100644 --- a/secao_01_estrutura_sequencial/ex_06_area_circulo.py +++ b/secao_01_estrutura_sequencial/ex_06_area_circulo.py @@ -16,5 +16,15 @@ """ -def calcular_area_de_circulo(): +def calcular_area_de_circulo(raio): """Escreva aqui em baixo a sua solução""" + return 3.1415 * (raio ** 2) + +while True: + try: + raio = float(input("Insira o raio do círculo: ")) + break + except ValueError: + print("Insira um raio valido.") +print(f"A área do círculo com esse raio é: {calcular_area_de_circulo(raio):.4f}") + \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_07_area_quadrado.py b/secao_01_estrutura_sequencial/ex_07_area_quadrado.py index 63b12a193..a5e7b134c 100644 --- a/secao_01_estrutura_sequencial/ex_07_area_quadrado.py +++ b/secao_01_estrutura_sequencial/ex_07_area_quadrado.py @@ -18,5 +18,10 @@ """ -def calcular_area_de_quadrado(): +def calcular_area_de_quadrado(lado): """Escreva aqui em baixo a sua solução""" + return float(lado) ** 2 + +lado = input("Insira o lado do quadrado: ") +print(f"A área do quadrado com esse lado é: {calcular_area_de_quadrado(lado):.2f}") +print(f"O dobro da área oo quadrado é: {calcular_area_de_quadrado(lado) * 2:.2f}") diff --git a/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py b/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py index 07ded093f..4d13c46be 100644 --- a/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py +++ b/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py @@ -15,5 +15,19 @@ """ -def calcular_salario(): +def calcular_salario(salarioHora, horasMes): """Escreva aqui em baixo a sua solução""" + return salarioHora * horasMes + +while True: + try: + salarioHora = float(input("Quanto você ganha por hora trabalhada? ")) + horasMes = float(input("Insira o número de horas trabalhadas no mês: ")) + break + except ValueError: + print("Insira um valor válido!") + +salario = calcular_salario(salarioHora, horasMes) +print(f"Seu salário desse mês é {salario:.2f}") + + diff --git a/secao_01_estrutura_sequencial/ex_09_fahrenheit_para_celsius.py b/secao_01_estrutura_sequencial/ex_09_fahrenheit_para_celsius.py index a13351c7e..a798a290e 100644 --- a/secao_01_estrutura_sequencial/ex_09_fahrenheit_para_celsius.py +++ b/secao_01_estrutura_sequencial/ex_09_fahrenheit_para_celsius.py @@ -17,5 +17,15 @@ """ -def transformar_para_celsius(): +def transformar_para_celsius(F): """Escreva aqui em baixo a sua solução""" + return 5 * ((F-32) / 9) + +while True: + try: + F = float(input("Insira a temperatura em Fahrenheit: ")) + break + except ValueError: + print("Insira uma temperatura válida!") +C = transformar_para_celsius(F) +print(f"Essa temperatura é de {int(C)} Celsius") \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py b/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py index 76d97aa8d..c35e48b1a 100644 --- a/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py +++ b/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py @@ -16,5 +16,14 @@ """ -def transformar_para_fahrenheit(): +def transformar_para_fahrenheit(C): """Escreva aqui em baixo a sua solução""" + return (9/5) * C + 32 +while True: + try: + C = float(input("Insira a temperatura em graus Celsius: ")) + break + except ValueError: + print("Insira uma temperatura válida!") +F = transformar_para_fahrenheit(C) +print(f"Essa temperatura é de {int(F)} Fahrenheit") diff --git a/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py b/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py index 09bdbbffd..cbb8d24a1 100644 --- a/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py +++ b/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py @@ -20,7 +20,24 @@ """ -def calcular_formulas(): +def calcular_formulas(n1, n2, n3): """Escreva aqui em baixo a sua solução""" - + f1 = (n1 * 2) * (n2 /2) + f2 = (n1 * 3) + n3 + f3 = n3 ** 3 + + print(f"O produto do dobro do primeiro com metade do segundo é {f1}") + print(f"A soma do triplo do primeiro com o terceiro é {f2}") + print(f"O terceiro elevado ao cubo é {f3}") + +while True: + try: + n1 = int(input("Insira um número inteiro: ")) + n2 = int(input("Insira outro número inteiro: ")) + n3 = float(input("Insira um número real: ")) + break + except ValueError: + print("Insira um número válido!") + +calcular_formulas(n1, n2, n3) diff --git a/secao_01_estrutura_sequencial/ex_12_peso_ideal.py b/secao_01_estrutura_sequencial/ex_12_peso_ideal.py index 1f8418fab..4bc85e8aa 100644 --- a/secao_01_estrutura_sequencial/ex_12_peso_ideal.py +++ b/secao_01_estrutura_sequencial/ex_12_peso_ideal.py @@ -17,5 +17,14 @@ """ -def calcular_peso_ideal(): +def calcular_peso_ideal(altura): """Escreva aqui em baixo a sua solução""" + return (72.7 * altura) - 58 + +while True: + try: + altura = float(input("Sua altura: ")) + break + except ValueError: + print("Insira uma altura válida!") +print(f"Seu peso ideal é {calcular_peso_ideal(altura):.1f}") \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_13_peso_ideal_mulher_e_homem.py b/secao_01_estrutura_sequencial/ex_13_peso_ideal_mulher_e_homem.py index fe27d6ff1..02fd1bb2a 100644 --- a/secao_01_estrutura_sequencial/ex_13_peso_ideal_mulher_e_homem.py +++ b/secao_01_estrutura_sequencial/ex_13_peso_ideal_mulher_e_homem.py @@ -20,5 +20,18 @@ """ -def calcular_peso_ideal(): +def calcular_peso_ideal(h): """Escreva aqui em baixo a sua solução""" + homem = (62.1*h) - 44.7 + mulher = (72.7*h) - 58 + print(f"Seu peso ideal é {mulher:.1f} se você for mulher") + print(f"Seu peso ideal é {homem:.1f} se você for homem") + +while True: + try: + h = float(input("Insira sua altura: ")) + break + except ValueError: + print("Insira uma entrada válida!") + +calcular_peso_ideal(h) \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_14_joao_papo_de_pescador.py b/secao_01_estrutura_sequencial/ex_14_joao_papo_de_pescador.py index 16a2a211f..46e25e5da 100644 --- a/secao_01_estrutura_sequencial/ex_14_joao_papo_de_pescador.py +++ b/secao_01_estrutura_sequencial/ex_14_joao_papo_de_pescador.py @@ -24,5 +24,23 @@ """ -def calcular_peso_excedente_e_multa(): +def calcular_peso_excedente_e_multa(peso): """Escreva aqui em baixo a sua solução""" + limite = 50 + if peso > limite: + excesso = peso - limite + multa = excesso * 4 + print(f"O peso excedente de peixes é de {excesso:.2f} kg") + print(f"Por isso, a multa é de R$ {multa:.2f}") + else: + print("Não há peso excedente, logo não há multas para pagar.") + +while True: + try: + peso = float(input("Peso dos peixes: ")) + break + except ValueError: + print("Insira um peso válido!") + +calcular_peso_excedente_e_multa(peso) + diff --git a/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py b/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py index 901de0409..e80a6b8c8 100644 --- a/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py +++ b/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py @@ -25,5 +25,24 @@ """ -def calcular_assalto_no_salario(): +def calcular_assalto_no_salario(salarioHora, horasMes): """Escreva aqui em baixo a sua solução""" + salarioBruto = salarioHora * horasMes + IR = salarioBruto * 0.11 + INSS = salarioBruto * 0.08 + sindicato = salarioBruto * 0.05 + SalarioLiquido = salarioBruto - (IR + INSS + sindicato) + print(f"Salário Bruto: {salarioBruto:.2f}") + print(f"IR (11%): {IR:.2f}") + print(f"INSS (8%): {INSS:.2f}") + print(f"Sindicato: {sindicato:.2f}") + print(f"Salário Liquído: {SalarioLiquido:.2f}") + +while True: + try: + salarioHora = float(input("Quanto você ganha por hora trabalhada? ")) + horasMes = float(input("Insira o número de horas trabalhadas no mês: ")) + break + except ValueError: + print("Insira um valor válido!") +calcular_assalto_no_salario(salarioHora, horasMes) \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_16_loja_de_tintas_simples.py b/secao_01_estrutura_sequencial/ex_16_loja_de_tintas_simples.py index 1a2d13529..9868f8b25 100644 --- a/secao_01_estrutura_sequencial/ex_16_loja_de_tintas_simples.py +++ b/secao_01_estrutura_sequencial/ex_16_loja_de_tintas_simples.py @@ -18,6 +18,23 @@ """ - -def calcular_latas_e_preco_de_tinta(): +import math +def calcular_latas_e_preco_de_tinta(area): """Escreva aqui em baixo a sua solução""" + litros = area / 3 + latas = math.ceil(litros / 18) + preco = latas * 80 + + print(f"Você deve comprar {latas} lata(s) de tinta ao custo de R$ {preco}") + +while True: + try: + area = float(input("Insira o tamanho em metros quadrados da área a ser pintada: ")) + if area <= 0: + print("A área deve ser um número positivo!") + continue + break + except ValueError: + print("Insira uma área válida!") + +calcular_latas_e_preco_de_tinta(area) diff --git a/secao_01_estrutura_sequencial/ex_17_loja_de_tintas_complexa.py b/secao_01_estrutura_sequencial/ex_17_loja_de_tintas_complexa.py index 09b7e7ffc..a5b437e70 100644 --- a/secao_01_estrutura_sequencial/ex_17_loja_de_tintas_complexa.py +++ b/secao_01_estrutura_sequencial/ex_17_loja_de_tintas_complexa.py @@ -27,6 +27,49 @@ """ - -def calcular_latas_e_preco_de_tinta(): - """Escreva aqui em baixo a sua solução""" +import math +def calcular_latas_e_preco_de_tinta(area): + area_com_folga = area * 1.10 + litros = area_com_folga / 6 + latas = math.ceil(litros / 18) + preco_latas = latas * 80 + sobra_latas = (latas * 18) - litros + galoes = math.ceil(litros / 3.6) + preco_galoes = galoes * 25 + sobra_galoes = (galoes * 3.6) - litros + melhor_preco = float('inf') + melhor_latas = 0 + melhor_galoes = 0 + sobra_mistura = 0 + + for latas_usadas in range(latas + 1): + litros_usados = latas_usadas * 18 + litros_restantes = max(0, litros - litros_usados) + galoes_usados = math.ceil(litros_restantes / 3.6) + + custo_total = (latas_usadas * 80) + (galoes_usados * 25) + sobra = (latas_usadas * 18 + galoes_usados * 3.6) - litros + + if custo_total < melhor_preco: + melhor_preco = custo_total + melhor_latas = latas_usadas + melhor_galoes = galoes_usados + sobra_mistura = sobra + + # Exibindo os resultados + print(f"Você deve comprar {math.ceil(litros)} litros de tinta.") + print(f"Você pode comprar {latas} lata(s) de 18 litros a um custo de R$ {preco_latas}. Vão sobrar {sobra_latas:.1f} litro(s) de tinta.") + print(f"Você pode comprar {galoes} galão(ões) de 3.6 litros a um custo de R$ {preco_galoes}. Vão sobrar {sobra_galoes:.1f} litro(s) de tinta.") + print(f"Para menor custo, você pode comprar {melhor_latas} lata(s) de 18 litros e {melhor_galoes} galão(ões) de 3.6 litros a um custo de R$ {melhor_preco}. Vão sobrar {sobra_mistura:.1f} litro(s) de tinta.") + +while True: + try: + area = float(input("Insira o tamanho em metros quadrados da área a ser pintada: ")) + if area <= 0: + print("A área deve ser um número positivo!") + continue + break + except ValueError: + print("Insira uma área válida!") + +calcular_latas_e_preco_de_tinta(area) \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py b/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py index b24730f1a..fbf8a9a55 100644 --- a/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py +++ b/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py @@ -19,5 +19,16 @@ """ -def calcular_tempo_de_download(): +def calcular_tempo_de_download(mb, mbps): """Escreva aqui em baixo a sua solução""" + tempo = round(mb/mbps) + print(f"O tempo aproximado do Download é: {tempo} minuto(s)") + +while True: + try: + mb = float(input("Tamanho do arquivo para download (em MB): ")) + mbps = float(input("velocidade do link de Internet (em Mbps): ")) + break + except ValueError: + print("Insira um valor válido!") +calcular_tempo_de_download(mb, mbps) diff --git a/secao_02_estrutura_de_decisao/ex_01_imprimir_maior_numero.py b/secao_02_estrutura_de_decisao/ex_01_imprimir_maior_numero.py index e1d40a714..16f8c1cff 100644 --- a/secao_02_estrutura_de_decisao/ex_01_imprimir_maior_numero.py +++ b/secao_02_estrutura_de_decisao/ex_01_imprimir_maior_numero.py @@ -17,3 +17,18 @@ def maior_de_dois_numeros(x, y): """Escreva aqui em baixo a sua solução""" + if x > y: + print(x) + elif y > x: + print(y) + else: + print("Os dois números são iguais.") + +while True: + try: + x = float(input("Insira um número: ")) + y = float(input("Insira outro número: ")) + break + except ValueError: + print("Insira um número válido!") +maior_de_dois_numeros(x, y) \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_02_positivo_ou_negativo.py b/secao_02_estrutura_de_decisao/ex_02_positivo_ou_negativo.py index 23501b91e..5e1ce886c 100644 --- a/secao_02_estrutura_de_decisao/ex_02_positivo_ou_negativo.py +++ b/secao_02_estrutura_de_decisao/ex_02_positivo_ou_negativo.py @@ -17,3 +17,17 @@ def positivo_ou_negativo(n): """Escreva aqui em baixo a sua solução""" + if n > 0: + print("positivo") + elif n < 0: + print("negativo") + else: + print("Nem positivo nem negativo") + +while True: + try: + n = float(input("Insira um valor: ")) + break + except ValueError: + print("Insira um valor válido!") +positivo_ou_negativo(n) diff --git a/secao_02_estrutura_de_decisao/ex_03_F_ou_M.py b/secao_02_estrutura_de_decisao/ex_03_F_ou_M.py index 466585cfb..f8abc3f1b 100644 --- a/secao_02_estrutura_de_decisao/ex_03_F_ou_M.py +++ b/secao_02_estrutura_de_decisao/ex_03_F_ou_M.py @@ -18,3 +18,12 @@ def f_ou_m(sexo): """Escreva aqui em baixo a sua solução""" + if sexo == 'F' or sexo == 'f': + print("F - Feminino") + elif sexo == 'M' or sexo == 'm': + print("M - Masculino") + else: + print("Sexo inválido") + +sexo = input("Insira seu sexo: ") +f_ou_m(sexo) diff --git a/secao_02_estrutura_de_decisao/ex_04_vogal_ou_consoante.py b/secao_02_estrutura_de_decisao/ex_04_vogal_ou_consoante.py index acdc60f64..8d73705da 100644 --- a/secao_02_estrutura_de_decisao/ex_04_vogal_ou_consoante.py +++ b/secao_02_estrutura_de_decisao/ex_04_vogal_ou_consoante.py @@ -17,3 +17,16 @@ def vogal_ou_consoante(letra): """Escreva aqui em baixo a sua solução""" + vogais = ['A', 'E', 'I', 'O', 'U', 'a', 'e', 'o', 'u'] + if letra in vogais: + print("Vogal") + else: + print("Consoante") + +while True: + letra = input("Insira uma letra: ") + if letra.isalpha(): + break + else: + print("Insira uma letra válida!") +vogal_ou_consoante(letra) diff --git a/secao_02_estrutura_de_decisao/ex_05_notas_parciais.py b/secao_02_estrutura_de_decisao/ex_05_notas_parciais.py index 322a968e7..e09018104 100644 --- a/secao_02_estrutura_de_decisao/ex_05_notas_parciais.py +++ b/secao_02_estrutura_de_decisao/ex_05_notas_parciais.py @@ -21,3 +21,19 @@ def notas_parciais(nota_1, nota_2): """Escreva aqui em baixo a sua solução""" + media = (nota_1+nota_2)/2 + if 10 > media >= 7: + print("Aprovado") + elif media == 10: + print("Aprovado com Distinção") + else: + print("Reprovado") + +while True: + try: + n1 = float(input("Insira a primeira nota: ")) + n2 = float(input("Insira a segunda nota: ")) + break + except ValueError: + print("Insira uma nota válida!") +notas_parciais(n1, n2) \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_06_maior_numero_de_3_numeros.py b/secao_02_estrutura_de_decisao/ex_06_maior_numero_de_3_numeros.py index 84e731053..ff46c0f84 100644 --- a/secao_02_estrutura_de_decisao/ex_06_maior_numero_de_3_numeros.py +++ b/secao_02_estrutura_de_decisao/ex_06_maior_numero_de_3_numeros.py @@ -17,3 +17,19 @@ def calcular_maior_de_3_numeros(x, y, z): """Escreva aqui em baixo a sua solução""" + maior = x + if y > maior: + maior = y + if z > maior: + maior = z + print(maior) + +while True: + try: + x = float(input("Digite o primeiro número: ")) + y = float(input("Digite o segundo número: ")) + z = float(input("Digite o terceiro número: ")) + break + except ValueError: + print("Insira um número válido!") +calcular_maior_de_3_numeros(x, y, z) \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_07_maior_e_menor_numero_de_3_numeros.py b/secao_02_estrutura_de_decisao/ex_07_maior_e_menor_numero_de_3_numeros.py index b60bfe70f..9f182b84c 100644 --- a/secao_02_estrutura_de_decisao/ex_07_maior_e_menor_numero_de_3_numeros.py +++ b/secao_02_estrutura_de_decisao/ex_07_maior_e_menor_numero_de_3_numeros.py @@ -21,3 +21,17 @@ def calcular_maior_de_3_numeros(x, y, z): """Escreva aqui em baixo a sua solução""" + maior = max(x, y, z) + menor = min(x, y, z) + print(f"Maior: {maior}") + print(f"Menor: {menor}") + +while True: + try: + x = float(input("Digite o primeiro número: ")) + y = float(input("Digite o segundo número: ")) + z = float(input("Digite o terceiro número: ")) + break + except ValueError: + print("Insira um número válido!") +calcular_maior_de_3_numeros(x, y, z) diff --git a/secao_02_estrutura_de_decisao/ex_08_escolha_de_produto.py b/secao_02_estrutura_de_decisao/ex_08_escolha_de_produto.py index 92155628a..fa565fbc9 100644 --- a/secao_02_estrutura_de_decisao/ex_08_escolha_de_produto.py +++ b/secao_02_estrutura_de_decisao/ex_08_escolha_de_produto.py @@ -20,3 +20,15 @@ def decidir_melhor_produto(x, y, z): """Escreva aqui em baixo a sua solução""" + melhor = min(x, y, z) + print(f"Melhor produto custa R${melhor:.2f}") + +while True: + try: + x = float(input("Preço do primeiro produto: ")) + y = float(input("Preço do segundo produto: ")) + z = float(input("Preço do terceiro produto: ")) + break + except ValueError: + print("Insira um preço válido!") +decidir_melhor_produto(x, y, z) diff --git a/secao_02_estrutura_de_decisao/ex_09_numeros_decrescentes.py b/secao_02_estrutura_de_decisao/ex_09_numeros_decrescentes.py index 547338521..948f8c577 100644 --- a/secao_02_estrutura_de_decisao/ex_09_numeros_decrescentes.py +++ b/secao_02_estrutura_de_decisao/ex_09_numeros_decrescentes.py @@ -15,6 +15,18 @@ """ - def ordenar_decrescente(x, y, z): """Escreva aqui em baixo a sua solução""" + numeros = [x, y, z] + numeros.sort(reverse=True) + print(numeros) + +while True: + try: + x = float(input("Digite o primeiro número: ")) + y = float(input("Digite o segundo número: ")) + z = float(input("Digite o terceiro número: ")) + break + except ValueError: + print("Insira um número válido!") +ordenar_decrescente(x, y, z) diff --git a/secao_02_estrutura_de_decisao/ex_10_cumprimento_em_turno.py b/secao_02_estrutura_de_decisao/ex_10_cumprimento_em_turno.py index d502e8de9..cdb591146 100644 --- a/secao_02_estrutura_de_decisao/ex_10_cumprimento_em_turno.py +++ b/secao_02_estrutura_de_decisao/ex_10_cumprimento_em_turno.py @@ -22,6 +22,17 @@ """ - def cumprimentar(turno: str): """Escreva aqui em baixo a sua solução""" + match turno: + case 'M'|'m': + print("Bom dia!") + case 'V'|'v': + print("Boa tarde!") + case 'N'|'n': + print("Boa noite!") + case _: + print("Valor inválido!") + +turno = input("Qual o seu turno? ") +cumprimentar(turno) diff --git a/secao_02_estrutura_de_decisao/ex_11_salario_tabajara.py b/secao_02_estrutura_de_decisao/ex_11_salario_tabajara.py index f10641d83..d426d5543 100644 --- a/secao_02_estrutura_de_decisao/ex_11_salario_tabajara.py +++ b/secao_02_estrutura_de_decisao/ex_11_salario_tabajara.py @@ -41,3 +41,28 @@ def calcular_aumento(salario: float): """Escreva aqui em baixo a sua solução""" + if salario <= 280: + percentual = 20 + aumento = 0.2 * 280 + novo_salario = salario + aumento + elif 280 <= salario <= 700: + percentual = 15 + aumento = 0.15 * 280 + novo_salario = salario + aumento + elif 700 <= salario <= 1500: + percentual = 10 + aumento = 0.1 * 280 + novo_salario = salario + aumento + elif salario >= 1500: + percentual = 5 + aumento = 0.05 * 280 + novo_salario = salario + aumento + print(f"Salário atual: R$ {salario}\nAumento porcentual: {percentual}%\nValor do aumento: R$ {aumento}\nNovo salário: R$ {novo_salario}") + +while True: + try: + salario = float(input("Insira seu salário: R$")) + break + except ValueError: + print("Insira um salário válido!") +calcular_aumento(salario) \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_12_clt_assalto.py b/secao_02_estrutura_de_decisao/ex_12_clt_assalto.py index 117e67bab..2d8ee61df 100644 --- a/secao_02_estrutura_de_decisao/ex_12_clt_assalto.py +++ b/secao_02_estrutura_de_decisao/ex_12_clt_assalto.py @@ -53,3 +53,41 @@ def calcular_salario_liquido(valor_hora: float, horas_trabalhadas: int): """Escreva aqui em baixo a sua solução""" + salario_bruto = valor_hora * horas_trabalhadas + + if salario_bruto <= 900: + IR = 0 + desconto_IR = 0 + elif 900 < salario_bruto <= 1500: + IR = 0.05 * salario_bruto + desconto_IR = 5 + elif 1500 < salario_bruto <= 2500: + IR = 0.1 * salario_bruto + desconto_IR = 10 + elif salario_bruto > 2500: + IR = 0.1 * salario_bruto + desconto_IR = 20 + + sindicato = 0.03 * salario_bruto + fgts = 0.11 * salario_bruto + inss= 0.1 * salario_bruto + total_descontos = IR + sindicato + inss + salario_liquido = salario_bruto - total_descontos + + print(f"Salário Bruto: (R$ {valor_hora:.2f} * {horas_trabalhadas}) : R$ {salario_bruto:.2f}") + print(f"(-) IR ({desconto_IR}%) : R$ {IR:.2f}") + print(f"(-) INSS (10%) : R$ {inss:.2f}") + print(f"(-) Sindicato (3%) : R$ {sindicato:.2f}") + print(f"FGTS (11%) : R$ {fgts:15.2f}") + print(f"Total de descontos : R$ {total_descontos:.2f}") + print(f"Salário Liquido : R$ {salario_liquido:.2f}") + + +while True: + try: + salarioHora = float(input("Quanto você ganha por hora trabalhada? ")) + horasMes = float(input("Insira o número de horas trabalhadas no mês: ")) + break + except ValueError: + print("Insira um valor válido!") +calcular_salario_liquido(salarioHora, horasMes) diff --git a/secao_02_estrutura_de_decisao/ex_13_dia_da_semana.py b/secao_02_estrutura_de_decisao/ex_13_dia_da_semana.py index 6edeb2c7d..21791be9b 100644 --- a/secao_02_estrutura_de_decisao/ex_13_dia_da_semana.py +++ b/secao_02_estrutura_de_decisao/ex_13_dia_da_semana.py @@ -29,3 +29,28 @@ def calcular_dia_da_semana(numero: int): """Escreva aqui em baixo a sua solução""" + match(numero): + case 1: + print("Domingo") + case 2: + print("Segunda") + case 3: + print("Terça") + case 4: + print("Quarta") + case 5: + print("Quinta") + case 6: + print("Sexta") + case 7: + print("Sábado") + case _: + print("Dia inválido") + +while True: + try: + numero = float(input("Insira um número: ")) + break + except ValueError: + print("Insira um valor válido!") +calcular_dia_da_semana(numero) diff --git a/secao_02_estrutura_de_decisao/ex_14_atribuicoes_de_conceitos.py b/secao_02_estrutura_de_decisao/ex_14_atribuicoes_de_conceitos.py index ca01c9495..31165775e 100644 --- a/secao_02_estrutura_de_decisao/ex_14_atribuicoes_de_conceitos.py +++ b/secao_02_estrutura_de_decisao/ex_14_atribuicoes_de_conceitos.py @@ -46,3 +46,29 @@ def calcular_conceito(nota_1: float, nota_2: float): """Escreva aqui em baixo a sua solução""" + media = (nota_1 + nota_2 ) / 2 + if 9 <= media <= 10: + conceito = 'A' + status = "APROVADO" + if 6 <= media <= 7.5: + conceito = 'C' + status = "APROVADO" + if 4 <= media <= 6: + conceito = 'D' + status = "REPROVADO" + if 4 <= media <= 0: + conceito = 'E' + status = "REPROVADO" + print(f"Notas: {nota_1:.1f} e {nota_2:.1f}.") + print(f"Média: {media:.1f}") + print(f"Conceito: {conceito}") + print(f"Status: {status}") + +while True: + try: + n1 = float(input("Insira a primeira nota: ")) + n2 = float(input("Insira a segunda nota: ")) + break + except ValueError: + print("Insira uma nota válida!") +calcular_conceito(n1, n2) \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_15_triangulo.py b/secao_02_estrutura_de_decisao/ex_15_triangulo.py index 7da3edebb..c28c1b788 100644 --- a/secao_02_estrutura_de_decisao/ex_15_triangulo.py +++ b/secao_02_estrutura_de_decisao/ex_15_triangulo.py @@ -27,3 +27,25 @@ def classificar_triangulo(lado_a: float, lado_b: float, lado_c: float): """Escreva aqui em baixo a sua solução""" + if (lado_a + lado_b > lado_c) and (lado_a + lado_c > lado_b) and (lado_b + lado_c > lado_a): + if lado_a == lado_b == lado_c: + print("Triângulo Equilátero") + elif lado_a == lado_b or lado_a == lado_c or lado_b == lado_c: + print("Triângulo Isósceles") + else: + print("Triângulo Escaleno") + + else: + return "Não é triângulo" + + + +while True: + try: + l1 = float(input("Insira o primeiro lado do triângulo: ")) + l2 = float(input("Insira o segundo lado do triângulo: ")) + l3 = float(input("Insira o terceiro lado do triângulo: ")) + break + except ValueError: + print("Insira um valor válido!") +classificar_triangulo(l1, l2, l3) diff --git a/secao_02_estrutura_de_decisao/ex_16_equacao_segundo_grau.py b/secao_02_estrutura_de_decisao/ex_16_equacao_segundo_grau.py index f3ae3dcde..c7deab901 100644 --- a/secao_02_estrutura_de_decisao/ex_16_equacao_segundo_grau.py +++ b/secao_02_estrutura_de_decisao/ex_16_equacao_segundo_grau.py @@ -22,7 +22,31 @@ 'Delta é 4, raízes são -1.0 e -3.0' """ - +import math def resolver_equacao_do_segundo_grau(a: float, b: float, c: float): """Escreva aqui em baixo a sua solução""" + if a == 0: + print("Valor do coeficiente a deve ser diferente de 0.") + else: + delta = (b ** 2) - (4 * a * c) + + if delta < 0: + print(f"Delta negativo {delta}, por isso não existem raízes reais") + elif delta == 0: + raiz = -b + 0 / (2 * a) + print(f"Delta é 0, raíz única no valor de {raiz}") + else: + raiz1 = -b + math.sqrt(delta) / (2 * a) + raiz2 = -b - math.sqrt(delta) / (2 * a) + print(f"Delta é {delta}, raízes são {raiz1} e {raiz2}") + +while True: + try: + a = float(input("Insira o valor de a: ")) + b = float(input("Insira o valor de b: ")) + c = float(input("Insira o valor de c: ")) + break + except ValueError: + print("Insira um valor válido!") +resolver_equacao_do_segundo_grau(a, b, c) \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py b/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py index cf1b9b11b..0a3ff9452 100644 --- a/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py +++ b/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py @@ -17,6 +17,30 @@ """ - def eh_ano_bissexto(ano: int): """Escreva aqui em baixo a sua solução""" + if ano % 4 == 0: + if ano % 100 == 0: + if ano % 400 == 0: + return True + else: + return False + else: + return True + else: + return False +while True: + try: + ano = int(input("Insira um ano: ")) + algarismos = len(str(ano)) + + if algarismos < 4: + print("Insira um ano válido!") + else: + break + except ValueError: + print("Insira um ano válido!") +if eh_ano_bissexto(ano): + print(f"{ano} é um ano bissexto.") +else: + print(f"{ano} não é um ano bissexto.") \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_18_validador_de_data.py b/secao_02_estrutura_de_decisao/ex_18_validador_de_data.py index 470fbd63d..2bd77f7e0 100644 --- a/secao_02_estrutura_de_decisao/ex_18_validador_de_data.py +++ b/secao_02_estrutura_de_decisao/ex_18_validador_de_data.py @@ -20,7 +20,19 @@ 'Data inválida' """ - +from datetime import datetime def validar_data(data: str): """Escreva aqui em baixo a sua solução""" + try: + datetime.strptime(data, "%d/%m/%Y") + return True + except ValueError: + return False + +data = input("Insira uma data: ") + +if validar_data(data): + print("Data válida") +else: + print("Data inválida") \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_20_3_notas_parciais.py b/secao_02_estrutura_de_decisao/ex_20_3_notas_parciais.py index c064ce5fd..05ee5d05b 100644 --- a/secao_02_estrutura_de_decisao/ex_20_3_notas_parciais.py +++ b/secao_02_estrutura_de_decisao/ex_20_3_notas_parciais.py @@ -21,3 +21,20 @@ def calcular_status(nota_1, nota_2, nota_3): """Escreva aqui em baixo a sua solução""" + media = (nota_1+nota_2+nota_3)/3 + if 10 > media >= 7: + print("Aprovado") + elif media == 10: + print("Aprovado com Distinção") + else: + print("Reprovado") + +while True: + try: + n1 = float(input("Insira a primeira nota: ")) + n2 = float(input("Insira a segunda nota: ")) + n3 = float(input("Insira a terceira nota: ")) + break + except ValueError: + print("Insira uma nota válida!") +calcular_status(n1, n2, n3) diff --git a/secao_02_estrutura_de_decisao/ex_21_troco.py b/secao_02_estrutura_de_decisao/ex_21_troco.py index 7edac85b2..8daa91404 100644 --- a/secao_02_estrutura_de_decisao/ex_21_troco.py +++ b/secao_02_estrutura_de_decisao/ex_21_troco.py @@ -24,6 +24,42 @@ '3 notas de R$ 100, 1 nota de R$ 50, 4 notas de R$ 10, 1 nota de R$ 5 e 4 notas de R$ 1' """ - def calcular_troco(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + notas_100 = valor // 100 + valor %= 100 + + notas_50 = valor // 50 + valor %= 50 + + notas_10 = valor // 10 + valor %= 10 + + notas_5 = valor // 5 + valor %= 5 + + notas_1 = valor + + print("\nNotas fornecidas:") + if notas_100: + print(f"{int(notas_100)} nota(s) de R$100") + if notas_50: + print(f"{int(notas_50)} nota(s) de R$50") + if notas_10: + print(f"{int(notas_10)} nota(s) de R$10") + if notas_5: + print(f"{int(notas_5)} nota(s) de R$5") + if notas_1: + print(f"{int(notas_1)} nota(s) de R$1") + +while True: + try: + valor_saque = float(input("Valor do saque: R$")) + + if 1 <= valor_saque <= 600: + break + else: + print("O valor mínimo é de 1 real e o máximo de 600 reais.") + except ValueError: + print("Insira um valor válido!") +calcular_troco(valor_saque) diff --git a/secao_02_estrutura_de_decisao/ex_22_par_ou_impar.py b/secao_02_estrutura_de_decisao/ex_22_par_ou_impar.py index a836f1758..1e6c775e3 100644 --- a/secao_02_estrutura_de_decisao/ex_22_par_ou_impar.py +++ b/secao_02_estrutura_de_decisao/ex_22_par_ou_impar.py @@ -22,3 +22,19 @@ def decidir_se_eh_par_ou_impar(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + if valor % 2 == 0: + return True + else: + return False + +while True: + try: + valor = float(input("Insira um valor: ")) + break + except ValueError: + print("Insira um valor válido!") + +if(decidir_se_eh_par_ou_impar(valor)): + print("Par") +else: + print("Impar") \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_23_inteiro_ou_decimal.py b/secao_02_estrutura_de_decisao/ex_23_inteiro_ou_decimal.py index 9f2d9da04..321037820 100644 --- a/secao_02_estrutura_de_decisao/ex_23_inteiro_ou_decimal.py +++ b/secao_02_estrutura_de_decisao/ex_23_inteiro_ou_decimal.py @@ -21,4 +21,17 @@ def decidir_se_eh_inteiro_ou_decimal(valor: str) -> str: - """Escreva aqui em baixo a sua solução""" + """Determina se o número informado é inteiro ou decimal.""" + try: + numero = float(valor) + arredondado = round(numero) + if numero == arredondado: + return "Inteiro" + else: + return "Decimal" + except ValueError: + return "Entrada inválida." + +valor = input("Insira um valor: ") +print(decidir_se_eh_inteiro_ou_decimal(valor)) + diff --git a/secao_02_estrutura_de_decisao/ex_24_operacao.py b/secao_02_estrutura_de_decisao/ex_24_operacao.py index 73fd5778f..29ed586e6 100644 --- a/secao_02_estrutura_de_decisao/ex_24_operacao.py +++ b/secao_02_estrutura_de_decisao/ex_24_operacao.py @@ -30,4 +30,50 @@ def fazer_operacao_e_classificar(n_1: float, n_2: float, operacao: str): - """Escreva aqui em baixo a sua solução""" + """Escreva aqui em baixo a sua solução""" + match (operacao): + case 'Soma'|'soma': + resultado = n_1 + n_2 + case 'Subtração'|'subtração': + resultado = n_1 - n_2 + case 'Multiplicação'|'multiplicação': + resultado = n_1 * n_2 + case 'Divisão'|'divisão': + resultado = n_1 / n_2 + case _: + print("Operação inválida!") + + def par_ou_impar(resultado): + if resultado % 2 == 0: + return 'par' + else: + return 'ímpar' + + def positivo_ou_negativo(resultado): + if resultado > 0: + return 'positivo' + elif resultado < 0: + return 'negativo' + else: + return 'netro' + + def inteiro_ou_decimal(resultado): + if resultado == round(resultado): + return 'inteiro' + else: + return 'decimal' + + print(f"Resultado: {resultado:.2f}\nNúmero é {par_ou_impar(resultado)}, {positivo_ou_negativo(resultado)} e {inteiro_ou_decimal(resultado)}.") + +while True: + try: + n1 = float(input("Insira o primeiro número: ")) + n2 = float(input("Insira o segundo número: ")) + break + + except ValueError: + print("Insira um número válido!") + +operacao = input("Escolha uma operação (soma, subtração, multiplicação, ou divisão): ") +fazer_operacao_e_classificar(n1, n2, operacao) + diff --git a/secao_02_estrutura_de_decisao/ex_25_sherlock.py b/secao_02_estrutura_de_decisao/ex_25_sherlock.py index b9e2e1017..0666cd817 100644 --- a/secao_02_estrutura_de_decisao/ex_25_sherlock.py +++ b/secao_02_estrutura_de_decisao/ex_25_sherlock.py @@ -29,7 +29,25 @@ 'Inocente' """ - - def investigar(telefonou: str, estava_no_local: str, mora_perto: str, devia: str, trabalhou: str, ): - """Escreva aqui em baixo a sua solução""" + """Escreva aqui em baixo a sua solução""" + respostas = [telefonou, estava_no_local, mora_perto, devia, trabalhou] + positivos = respostas.count('Sim') + + if positivos == 5: + return 'Assassino' + elif 3 <= positivos <= 4: + return 'Cúmplice' + elif positivos == 2: + return 'Suspeito' + elif positivos == 1: + return 'Inocente' + elif positivos == 0: + return 'Inocente' + +telefonou = input("Telefonou para a vítima? ") +estava_no_local = input("Esteve no local do crime? ") +mora_perto = input("Mora perto da vítima? ") +devia = input("Devia para a vítima? ") +trabalhou = input("Já trabalhou com a vítima? ") +print(investigar(telefonou, estava_no_local, mora_perto, devia, trabalhou)) \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_26_posto_de_gasolina.py b/secao_02_estrutura_de_decisao/ex_26_posto_de_gasolina.py index a308c0640..47a98c474 100644 --- a/secao_02_estrutura_de_decisao/ex_26_posto_de_gasolina.py +++ b/secao_02_estrutura_de_decisao/ex_26_posto_de_gasolina.py @@ -31,7 +31,44 @@ '30 litro(s) de gasolina custa(m): R$ 75.00. Com 6% de desconto, fica R$ 70.50' """ - - def calcular_abastecimento(litros_de_combustivel: float, tipo_de_combustivel: str) -> str: """Escreva aqui em baixo a sua solução""" + match(tipo_de_combustivel): + case 'a'|'A': + tipo_de_combustivel = 'álcool' + preco = litros_de_combustivel * 1.9 + if litros_de_combustivel <= 20: + d = '3%' + desconto = 1.9 - (0.03 * 1.9) + preco_desconto = preco - desconto + elif litros_de_combustivel > 20: + d = '5%' + desconto = 1.9 - (0.05 * 1.9) + preco_desconto = preco - desconto + + case 'g'|'G': + tipo_de_combustivel = 'gasolina' + preco = litros_de_combustivel * 2.5 + if litros_de_combustivel <= 20: + d = '4%' + desconto = 1.9 - (0.04 * 2.5) + preco_desconto = preco - desconto + elif litros_de_combustivel > 20: + d = '6%' + desconto = 1.9 - (0.06 * 2.5) + preco_desconto = preco - desconto + case _: + print("Entrada inválida!") + + print(f"{litros_de_combustivel} litro(s) de {tipo_de_combustivel} custa(m): R$ {preco:.2f}. Com {d} de desconto, fica R$ {preco_desconto:.2f}") + +while True: + try: + litros = int(input("Quantidade de litros vendidos: ")) + break + except ValueError: + print("Insira uma quantidade válida!") + +combustivel = input("Qual o tipo de combustível foi vendido (A-álcool, G-gasolina)? ") +calcular_abastecimento(litros, combustivel) +