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 b6f044ab4..6e6fc2051 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 @@ -26,6 +26,29 @@ def resolver_equacao_do_segundo_grau(a: float, b: float, c: float): """Escreva aqui em baixo a sua solução""" + import math + #passo 1: calcular delta com --> delta = b*b - (4*a*c) + delta = b*b - (4*a*c) + #passo 2: Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado; + #função: print('Valor do coeficiente a deve ser diferente de 0') + if a == 0: + print("'Valor do coeficiente a deve ser diferente de 0'") + + #passo 3: Se o delta calculado for negativo, a equação não possui raizes reais. Informe ao usuário e encerre o programa; + elif delta < 0: + print(f"'Delta negativo ({delta}), por isso não existem raízes reais'") + #passo 4: Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário; + elif delta == 0: + raiz = (-b + math.sqrt(delta) ) / 2*a + print(f"'Delta é {delta}, raíz única no valor de {raiz:.1f}'") + #passo 5: Se o delta for positivo, a equação possui duas raiz reais; informe-as ao usuário. + elif delta > 0: + raiz = (-b + math.sqrt(delta) ) / 2*a + raiz2 = (-b - math.sqrt(delta) ) / 2*a + print(f"'Delta é {delta}, raízes são {raiz:.1f} e {raiz2:.1f}'") + + + 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..4b5919c50 100644 --- a/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py +++ b/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py @@ -20,3 +20,9 @@ def eh_ano_bissexto(ano: int): """Escreva aqui em baixo a sua solução""" + #passo 1: descobrir se ano / 4 tem o resto 0 ou se é multiplo de 400; se tiver, então o ano é bissexto + if (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0): + print(True) + #passo 2: se não entrar nas condições acima, é falso + else: + print(False) \ 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..5d1425136 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 @@ -24,3 +24,9 @@ def validar_data(data: str): """Escreva aqui em baixo a sua solução""" + from datetime import datetime + try: + datetime.strptime(data.strip(), '%d/%m/%Y') + print("""'Data válida'""") + except ValueError: + print("'Data inválida'") \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_19_decomposicao_de_numero.py b/secao_02_estrutura_de_decisao/ex_19_decomposicao_de_numero.py index a66653980..b381d0ac2 100644 --- a/secao_02_estrutura_de_decisao/ex_19_decomposicao_de_numero.py +++ b/secao_02_estrutura_de_decisao/ex_19_decomposicao_de_numero.py @@ -52,3 +52,50 @@ def decompor_numero(numero: int): """Escreva aqui em baixo a sua solução""" + numero_final = numero + centenas_str = dezenas_str = unidade_str = '' + centenas_int, numero = divmod(numero, 100) + partes_numeros = 0 + + if centenas_int == 1: + centenas_str = '1 centena' + partes_numeros += 1 + elif centenas_int > 1: + centenas_str = f'{centenas_int} centenas' + partes_numeros += 1 + + dezenas_int, numero = divmod(numero, 10) + + if dezenas_int == 1: + dezenas_str = '1 dezena' + partes_numeros += 1 + elif dezenas_int > 1: + dezenas_str = f'{dezenas_int} dezenas' + partes_numeros += 1 + + if numero == 1: + unidade_str = '1 unidade' + partes_numeros += 1 + elif numero > 1: + unidade_str = f'{numero} unidades' + partes_numeros += 1 + + if numero_final <= 0: + print("""'O número precisa ser positivo'""") + elif numero_final >= 1000: + print("""'O número precisa ser menor que 1000'""") + elif partes_numeros == 1: + if centenas_str != '': + print(f"""'{numero_final} = {centenas_str}'""") + elif dezenas_str != '': + print(f"""'{numero_final} = {dezenas_str}'""") + elif unidade_str != '': + print(f"""'{numero_final} = {unidade_str}'""") + elif partes_numeros == 3: + print(f"""'{numero_final} = {centenas_str}, {dezenas_str} e {unidade_str}'""") + elif partes_numeros == 2: + if centenas_str != '': + segunda_parte = dezenas_str + unidade_str + print(f"""'{numero_final} = {centenas_str} e {segunda_parte}'""") + else: + print(f"""'{numero_final} = {dezenas_str} e {unidade_str}'""") \ 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..04e1346eb 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,14 @@ 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 + aprovado = "'Aprovado'" + aprovado_10 = "'Aprovado com Distinção'" + reprovado = "'Reprovado'" + if media >= 7 and media < 10: + print(aprovado) + elif media < 7: + print(reprovado) + elif media == 10: + print(aprovado_10) + \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_21_troco.py b/secao_02_estrutura_de_decisao/ex_21_troco.py index 7edac85b2..2b5fcc638 100644 --- a/secao_02_estrutura_de_decisao/ex_21_troco.py +++ b/secao_02_estrutura_de_decisao/ex_21_troco.py @@ -27,3 +27,81 @@ def calcular_troco(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + #informar quantas notas de cada valor serão fornecidas. + #valores: As notas disponíveis serão as de 1, 5, 10, 50 e 100 reais. + #exemplo: Exemplo 1: Para sacar a quantia de 256 reais, o programa fornece duas notas de 100, uma nota de 50, uma nota de 5 e umanota de 1; + #var: + saque = valor + notas_de_100 = notas_de_50 = notas_de_10 = notas_de_5 = notas_de_1 = 0 + notas_de_100, saque = divmod(saque, 100) + notas_de_50, saque = divmod(saque, 50) + notas_de_10, saque = divmod(saque, 10) + notas_de_5, notas_de_1 = divmod(saque, 5) + parte = 0 + #condições: + print("'",end="") + if notas_de_100 == 1: + print(f"{notas_de_100} nota de R$ 100",end="") + parte += 1 + elif notas_de_100 > 1: + print(f"{notas_de_100} notas de R$ 100",end="") + parte += 1 + if notas_de_50 != 0 and parte == 1: + print(",",end=" ") + if notas_de_50 == 1: + print(f"{notas_de_50} nota de R$ 50",end="") + parte += 1 + elif notas_de_50 > 1: + print(f"{notas_de_50} notas de R$ 50",end="") + parte += 1 + if parte != 0 and notas_de_10 != 0: + print(",",end=" ") + if notas_de_10 == 1: + print(f"{notas_de_10} nota de R$ 10",end="") + parte += 1 + elif notas_de_10 > 1: + print(f"{notas_de_10} notas de R$ 10",end="") + parte += 1 + if parte != 0 and notas_de_5 != 0: + print(",",end=" ") + if notas_de_5 == 1: + print(f"{notas_de_5} nota de R$ 5",end="") + parte += 1 + elif notas_de_5 > 1: + print(f"{notas_de_5} notas de R$ 5",end="") + parte += 1 + if parte != 0 and notas_de_1 != 0: + print(" e",end=" ") + if notas_de_1 == 1: + print(f"{notas_de_1} nota de R$ 1",end="") + elif notas_de_10 > 1: + print(f"{notas_de_1} notas de R$ 1",end="") + print("'") + + # if notas_de_100 > 0: + # print(f"{notas_de_100} notas de R$ 100",end=", ") + # if notas_de_50 > 0: + # print(f"{notas_de_50} notas de R$ 50",end=", ") + # if notas_de_10 > 0: + # print(f"{notas_de_10} notas de R$ 10",end=", ") + # if notas_de_5 > 0: + # print(f"{notas_de_5} notas de R$ 5",end=", ") + # if notas_de_1 > 0: + # print(f"{notas_de_1} e notas de R$ 1") + + + + + + + + + + + # tipos_de_notas = [1, 5, 10, 50, 100] + # pedacos=[] + # resto = valor + # while resto > 0: + # tipo_de_nota = tipos_de_notas.pop() + # if len(pedacos)==1: + # return pedacos.pop() 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..2111b6446 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,12 @@ def decidir_se_eh_par_ou_impar(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + #1º passo: encontrar o resto da operação + resto = valor % 2 + #2º passo: se resto for igual a zero, então o valor digitado é par: + if resto == 0: + print("'Par'") + #3º passp: se não é ímpar: + else: + print("'Impar'") + 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..1e23bf8bd 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 @@ -22,3 +22,11 @@ def decidir_se_eh_inteiro_ou_decimal(valor: str) -> str: """Escreva aqui em baixo a sua solução""" + #converter valor de str para float: + valor_float = float(valor) + #se um número for igual a seu arredondamento, então é inteiro: + if valor_float == round(valor_float): + print("'Inteiro'") + #se não, é decimal: + else: + print("'Decimal'") diff --git a/secao_02_estrutura_de_decisao/ex_24_operacao.py b/secao_02_estrutura_de_decisao/ex_24_operacao.py index 73fd5778f..a8e7f65f2 100644 --- a/secao_02_estrutura_de_decisao/ex_24_operacao.py +++ b/secao_02_estrutura_de_decisao/ex_24_operacao.py @@ -31,3 +31,43 @@ def fazer_operacao_e_classificar(n_1: float, n_2: float, operacao: str): """Escreva aqui em baixo a sua solução""" + resultado = 0 + impar_ou_par = "" + positivo_negativo_neutro = "" + inteiro_decimal = "" + #definir condições paras as operações + if operacao == "+": + resultado = n_1 + n_2 + elif operacao == "-": + resultado = n_1 - n_2 + elif operacao == "*" : + resultado = n_1 * n_2 + elif operacao == "/": + resultado = n_1 / n_2 + + #definindo se o número é positivo, negativo ou neutro: + if resultado > 0: + positivo_negativo_neutro = "positivo" + elif resultado < 0: + positivo_negativo_neutro = "negativo" + elif resultado == 0: + positivo_negativo_neutro = "neutro" + + #definindo se o número é inteiro ou decimal: + if resultado == round(resultado): + inteiro_decimal = "inteiro" + else: + inteiro_decimal = "decimal" + + #definindo se o número é impar ou par + if resultado % 2 == 0 and inteiro_decimal == "inteiro": + impar_ou_par = "par, " + elif resultado % 2 != 0 and inteiro_decimal == "inteiro": + impar_ou_par = "impar, " + + #exibindo resultados: + print(f"Resultado: {resultado:.2f}") + print(f"Número é {impar_ou_par}{positivo_negativo_neutro} e {inteiro_decimal}.") + + + diff --git a/secao_02_estrutura_de_decisao/ex_25_sherlock.py b/secao_02_estrutura_de_decisao/ex_25_sherlock.py index b9e2e1017..c115b7440 100644 --- a/secao_02_estrutura_de_decisao/ex_25_sherlock.py +++ b/secao_02_estrutura_de_decisao/ex_25_sherlock.py @@ -33,3 +33,23 @@ def investigar(telefonou: str, estava_no_local: str, mora_perto: str, devia: str, trabalhou: str, ): """Escreva aqui em baixo a sua solução""" + sim = 0 + if telefonou == "Sim": + sim += 1 + if estava_no_local == "Sim": + sim += 1 + if mora_perto == "Sim": + sim += 1 + if devia == "Sim": + sim += 1 + if trabalhou == "Sim": + sim += 1 + + if sim == 2: + print("'Suspeito'") + elif sim >= 3 and sim <= 4: + print("'Cúmplice'") + elif sim == 5: + print("'Assassino'") + else: + print("'Inocente'") 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..bd4fed1a5 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 @@ -35,3 +35,19 @@ def calcular_abastecimento(litros_de_combustivel: float, tipo_de_combustivel: str) -> str: """Escreva aqui em baixo a sua solução""" + if tipo_de_combustivel == "A" and litros_de_combustivel <= 20: + preco_alcool = litros_de_combustivel * 1.9 + desconto = preco_alcool - (preco_alcool * 0.03) + print(f"'{litros_de_combustivel} litro(s) de álcool custa(m): R$ {preco_alcool:.2f}. Com 3% de desconto, fica R$ {desconto:.2f}'") + elif tipo_de_combustivel == "A" and litros_de_combustivel > 20: + preco_alcool = litros_de_combustivel * 1.9 + desconto = preco_alcool - (preco_alcool * 0.05) + print(f"'{litros_de_combustivel} litro(s) de álcool custa(m): R$ {preco_alcool:.2f}. Com 5% de desconto, fica R$ {desconto:.2f}'") + elif tipo_de_combustivel == "G" and litros_de_combustivel <= 20: + preco_gasolina = litros_de_combustivel * 2.5 + desconto = preco_gasolina - (preco_gasolina * 0.04) + print(f"'{litros_de_combustivel} litro(s) de gasolina custa(m): R$ {preco_gasolina:.2f}. Com 4% de desconto, fica R$ {desconto:.2f}'") + elif tipo_de_combustivel == "G" and litros_de_combustivel > 20: + preco_gasolina = litros_de_combustivel * 2.5 + desconto = preco_gasolina - (preco_gasolina * 0.06) + print(f"'{litros_de_combustivel} litro(s) de gasolina custa(m): R$ {preco_gasolina:.2f}. Com 6% de desconto, fica R$ {desconto:.2f}'") diff --git a/secao_02_estrutura_de_decisao/ex_27_hortifruti.py b/secao_02_estrutura_de_decisao/ex_27_hortifruti.py index 2e468a508..bf3b0a8ff 100644 --- a/secao_02_estrutura_de_decisao/ex_27_hortifruti.py +++ b/secao_02_estrutura_de_decisao/ex_27_hortifruti.py @@ -59,3 +59,48 @@ def calcular_preco_da_compra(kilos_de_morango: int, kilos_de_maca: int): """Escreva aqui em baixo a sua solução""" + total_morangos = 0 + total_maca = 0 + #condicionamento morangos + if kilos_de_morango <= 5 and kilos_de_morango > 0: + preco_morango = 2.5 + total_morangos = preco_morango * kilos_de_morango + print(f"(+) Morango - valor: R$ {total_morangos:.2f} - quantidade: {kilos_de_morango} kg - preço: R$ 2.50/kg") + elif kilos_de_morango > 5: + preco_morango = 2.2 + total_morangos = preco_morango * kilos_de_morango + print(f"(+) Morango - valor: R${total_morangos:6.2f} - quantidade: {kilos_de_morango} kg - preço: R$ 2.20/kg") + else: + total_morangos = 0 + + #condicionamento maças + if kilos_de_maca <= 5 and kilos_de_maca > 0: + preco_maca = 1.8 + total_maca = preco_maca * kilos_de_maca + print(f"(+) Maça - valor: R$ {total_maca:.2f} - quantidade: {kilos_de_maca} kg - preço: R$ 1.80/kg") + elif kilos_de_maca > 5: + preco_maca = 1.5 + total_maca = preco_maca * kilos_de_maca + print(f"(+) Maça - valor: R${total_maca:6.2f} - quantidade: {kilos_de_maca} kg - preço: R$ 1.50/kg") + else: + total_maca = 0 + + #definindo peso_total e preco_total + peso_total = kilos_de_morango + kilos_de_maca + preco_total = total_morangos + total_maca + + #condicionamento por peso e prints finais + if peso_total > 8 or preco_total >25: + print(f'(-) Desconto - valor: R$ {preco_total*0.1:.2f}') + print(f' Valor Total: R${preco_total*0.9:6.2f}') + else: + print("(-) Desconto - valor: R$ 0.00") + print(f" Valor Total: R${preco_total:6.2f}") + + + + + + + + \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py b/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py index fa2daf360..1198ad93a 100644 --- a/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py +++ b/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py @@ -47,3 +47,41 @@ def calcular_preco_da_carne(tipo_de_carne: str, kilos_de_carne: int, forma_de_pagamento: str) -> str: """Escreva aqui em baixo a sua solução""" + #declaração de variáveis + preco_carne = 0 + preco_kilo = "" + desconto_print = "" + sem_desconto = "" + #filé: R$ 4,90 por Kg até 5kg + if tipo_de_carne == "Filé Duplo" and kilos_de_carne <= 5: + preco_carne = kilos_de_carne * 4.9 + preco_kilo = "4.90/kg" + #filé: R$ 5,80 por Kg mais de 5kg + elif tipo_de_carne == "Filé Duplo" and kilos_de_carne > 5: + preco_carne = kilos_de_carne * 5.8 + preco_kilo = "5.80/kg" + #Alcatra: R$ 5,90 por Kg até 5kg + if tipo_de_carne == "Alcatra" and kilos_de_carne <= 5: + preco_carne = kilos_de_carne * 5.9 + preco_kilo = "5.90/kg" + #Alcantra: R$ 6,80 por Kg mais de 5kg + elif tipo_de_carne == "Alcatra" and kilos_de_carne > 5: + preco_carne = kilos_de_carne * 6.8 + preco_kilo = "6.80/kg" + #Picanha (até5) R$ 6,90 por Kg (mais que 5) R$ 7,80 por Kg + if tipo_de_carne == "Picanha" and kilos_de_carne <= 5: + preco_carne = kilos_de_carne * 6.9 + preco_kilo = "6.90/kg" + elif tipo_de_carne == "Picanha" and kilos_de_carne > 5: + preco_carne = kilos_de_carne * 7.8 + preco_kilo = "7.80/kg" + + #calcular valor com desconto e sem desconto: + if forma_de_pagamento == "cartão tabajara": + desconto = preco_carne - (preco_carne * 0.05) + desconto_print = f"Com desconto de 5% pelo pagamento feito com cartão tabajara, fica R$ {desconto:.2f}" + print(f"'{kilos_de_carne} kg de {tipo_de_carne} a R$ {preco_kilo} saem a R$ {preco_carne:.2f}. {desconto_print}'") + else: + sem_desconto = f"Não há desconto, pagamento feito com {forma_de_pagamento}" + print(f"'{kilos_de_carne} kg de {tipo_de_carne} a R$ {preco_kilo} saem a R$ {preco_carne:.2f}. {sem_desconto}'") + diff --git a/secao_03_estrutura_de_repeticao/ex_01_numero_valido.py b/secao_03_estrutura_de_repeticao/ex_01_numero_valido.py index 168481e57..3d37172bd 100644 --- a/secao_03_estrutura_de_repeticao/ex_01_numero_valido.py +++ b/secao_03_estrutura_de_repeticao/ex_01_numero_valido.py @@ -34,3 +34,13 @@ def obter_numero_valido(): """Escreva aqui em baixo a sua solução""" + nota = input('Digite a sua nota: ') + while nota.isdigit() == False or len(nota) > 1 and nota != '10': + print(f'Número inválido: {nota}') + nota = input('Digite a sua nota: ') + print(nota) + + + + + diff --git a/secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py b/secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py index b863e1a11..30e011c8e 100644 --- a/secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py +++ b/secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py @@ -21,3 +21,11 @@ def validar_senha(): """Escreva aqui em baixo a sua solução""" + login = input("Digite seu nome de usuário: ") + senha = input("Digite sua senha: ") + while login == senha: + print("Senha deve ser diferente do login") + login = input("Digite seu nome de usuário: ") + senha = input("Digite sua senha: ") + print(f"'Cadastro realizado com suceso, seu login é {login}'") + diff --git a/secao_03_estrutura_de_repeticao/ex_03_validador_de_cadastro.py b/secao_03_estrutura_de_repeticao/ex_03_validador_de_cadastro.py index 35d52987e..05b3f4344 100644 --- a/secao_03_estrutura_de_repeticao/ex_03_validador_de_cadastro.py +++ b/secao_03_estrutura_de_repeticao/ex_03_validador_de_cadastro.py @@ -40,3 +40,24 @@ def cadastrar_usuario(nome: str, idade: int, salario: float, sexo: str, estado_civil: str): """Escreva aqui em baixo a sua solução""" + erros = 0 + if len(nome) < 3: + print(f"Erro: o nome precisa ter 3 letras ou mais, não pode ser {nome}") + erros += 1 + if idade > 150 or idade < 0: + print(f"Erro: a idade precisa estar entre 0 e 150, não pode ser {idade}") + erros += 1 + if salario <= 0: + print(f"Erro: o salário precisa ser positivo, não pode ser {salario}") + erros += 1 + if sexo != 'f' and sexo != 'm': + print(f'Erro: o sexo precisa ser "m" ou "f", não pode ser "{sexo}"') + erros += 1 + if estado_civil not in ("scvd"): + print(f'Erro: o estado civil precisa ser "s", "c", "v" ou "d", não pode ser "{estado_civil}"') + erros += 1 + + if erros == 0: + print("Cadastro realizado com sucesso") + + diff --git a/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py b/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py index a2109cfb5..a0640e21a 100644 --- a/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py +++ b/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py @@ -16,3 +16,15 @@ def calcular_ano_ultrapassagem_populacional() -> str: """Escreva aqui em baixo a sua solução""" + A = 80000 + B = 200000 + taxa_A = 0.03 + taxa_B = 0.015 + + anos = 0 + while A < B: + A = A + (A * taxa_A) + B = B + (B * taxa_B) + anos += 1 + + print (f"'População de A, depois de {anos} ano(s) será de {int(A)} pessoas, superando a de B, que será de {int(B)} pessoas'") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_05_crescimento_populacional_parametrizavel.py b/secao_03_estrutura_de_repeticao/ex_05_crescimento_populacional_parametrizavel.py index 827d5d190..c7dc56819 100644 --- a/secao_03_estrutura_de_repeticao/ex_05_crescimento_populacional_parametrizavel.py +++ b/secao_03_estrutura_de_repeticao/ex_05_crescimento_populacional_parametrizavel.py @@ -23,3 +23,13 @@ def calcular_ano_ultrapassagem_populacional( populacao_menor: int, taxa_crescimento_populacao_menor: float, populacao_maior, taxa_crescimento_populacao_maior:float ) -> str: """Escreva aqui em baixo a sua solução""" + anos = 0 + if taxa_crescimento_populacao_menor < taxa_crescimento_populacao_maior: + print(f"'A taxa de crescimento do país B ({taxa_crescimento_populacao_maior*100}%) deve ser menor do que a do país A ({taxa_crescimento_populacao_menor*100}%)'") + else: + while populacao_menor < populacao_maior: + populacao_menor = populacao_menor + (populacao_menor * taxa_crescimento_populacao_menor) + populacao_maior = populacao_maior + (populacao_maior * taxa_crescimento_populacao_maior) + anos += 1 + print(f"'População de A, depois de {anos} ano(s) será de {int(populacao_menor)} pessoas, superando a de B, que será de {int(populacao_maior)} pessoas'") + diff --git a/secao_03_estrutura_de_repeticao/ex_06_numeros_1_a_20.py b/secao_03_estrutura_de_repeticao/ex_06_numeros_1_a_20.py index a72fb1d95..d6739b130 100644 --- a/secao_03_estrutura_de_repeticao/ex_06_numeros_1_a_20.py +++ b/secao_03_estrutura_de_repeticao/ex_06_numeros_1_a_20.py @@ -33,3 +33,10 @@ def escrever_numeros_de_1_a_20(formato:str) -> str: """Escreva aqui em baixo a sua solução""" + if formato == "um_abaixo_do_outro": + for n in range(1,21): + print(n) + elif formato == "um_ao_lado_do_outro": + for n in range(1,20): + print(n, end=" ") + print(20) diff --git a/secao_03_estrutura_de_repeticao/ex_07_maior_de_5_numeros.py b/secao_03_estrutura_de_repeticao/ex_07_maior_de_5_numeros.py index 3fc410ab3..0339dcd4e 100644 --- a/secao_03_estrutura_de_repeticao/ex_07_maior_de_5_numeros.py +++ b/secao_03_estrutura_de_repeticao/ex_07_maior_de_5_numeros.py @@ -13,3 +13,6 @@ def calcular_maior_numero(n1: int, n2: int, n3: int, n4: int, n5: int, ) -> int: """Escreva aqui em baixo a sua solução""" + numeros = [n1, n2, n3, n4, n5] + print(max(numeros)) + diff --git a/secao_03_estrutura_de_repeticao/ex_08_soma_e_media_de_5_numeros.py b/secao_03_estrutura_de_repeticao/ex_08_soma_e_media_de_5_numeros.py index 86b169bb6..33c556556 100644 --- a/secao_03_estrutura_de_repeticao/ex_08_soma_e_media_de_5_numeros.py +++ b/secao_03_estrutura_de_repeticao/ex_08_soma_e_media_de_5_numeros.py @@ -16,3 +16,6 @@ def calcular_soma_e_media(n1: int, n2: int, n3: int, n4: int, n5: int) -> str: """Escreva aqui em baixo a sua solução""" + notas = [n1,n2,n3,n4,n5] + media = sum(notas)/len(notas) + print(f"'Soma: {sum(notas)}, Média: {media:.2f}'") diff --git a/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py b/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py index b8a480990..2d5af15ff 100644 --- a/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py +++ b/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py @@ -12,3 +12,8 @@ def calcular_numeros_impares_de_1_a_50() -> str: """Escreva aqui em baixo a sua solução""" + print("'", end="") + for n in range(1,49,2): + print(f"{n},", end=" ") + print("49'",end="") + diff --git a/secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py b/secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py index 09838c651..4e7c7ba05 100644 --- a/secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py +++ b/secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py @@ -16,3 +16,12 @@ def calcular_numeros_no_intervalo(inicio: int, fim: int) -> str: """Escreva aqui em baixo a sua solução""" + if inicio < fim: + print("'", end="") + for n in range(inicio, fim): + if n != fim-1: + print(f"{n}", end=", ") + elif n == fim-1: + print(f"{n}'", end="") + else: + print("''") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py b/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py index 875432bf8..6a6e0a03c 100644 --- a/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py +++ b/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py @@ -18,3 +18,13 @@ def calcular_numeros_no_intervalo_e_somar(inicio: int, fim: int) -> str: """Escreva aqui em baixo a sua solução""" + if inicio < fim: + print("'Sequência: ", end="") + for n in range(inicio, fim): + if n != fim-1: + print(f"{n}", end=", ") + elif n == fim-1: + print(f"{n}", end=".") + print(f" Soma: {sum(range(inicio, fim))}'") + else: + print("'Sequência: vazia. Soma: 0'") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_12_tabuada.py b/secao_03_estrutura_de_repeticao/ex_12_tabuada.py index f066ddd5a..d88eefea0 100644 --- a/secao_03_estrutura_de_repeticao/ex_12_tabuada.py +++ b/secao_03_estrutura_de_repeticao/ex_12_tabuada.py @@ -124,3 +124,8 @@ def gerar_tabuada(n: int) -> str: """Escreva aqui em baixo a sua solução""" + if n >= 1 and n<=10: + for c in range(1,11): + print(f"{n} X {c} = {n*c}") + else: + print("Somente pode ser gerada tabuada de 1 a 10") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py b/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py index 617b82620..876cc7d2e 100644 --- a/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py +++ b/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py @@ -18,3 +18,8 @@ def calcular_potencia(base: int, expoente: int) -> int: """Escreva aqui em baixo a sua solução""" + potencia=1 + + for c in range(expoente): + potencia *= base + print(potencia) diff --git a/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py b/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py index 2881cc0a0..ef7315596 100644 --- a/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py +++ b/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py @@ -18,3 +18,12 @@ def calcular_qtde_numeros_pares_e_impares(n1: int, n2: int, n3: int, n4: int, n5: int, n6: int, n7: int, n8: int, n9: int, n10: int) -> str: """Escreva aqui em baixo a sua solução""" + numeros = [n1, n2, n3, n4, n5, n6, n7, n8, n9, n10] + par = 0 + impar = 0 + for n in numeros: + if n % 2 == 0: + par += 1 + else: + impar += 1 + print(f"'Existem {par} números pares e {impar} números impares'") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py b/secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py index bde925c25..83cd89bf4 100644 --- a/secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py +++ b/secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py @@ -25,3 +25,22 @@ def calcular_serie_de_fibonacci(n: int) -> str: """Escreva aqui em baixo a sua solução""" + fibonacci = [1, 1] + cont = 0 + if n == 1: + print("'1'") + else: + while cont < n - 2: + fibonacci += [fibonacci[cont] + fibonacci[cont + 1]] + cont += 1 + else: + print("'", end = '') + print(*fibonacci, sep = ', ', end = '') + print("'", end = '') + + + + + + + diff --git a/secao_03_estrutura_de_repeticao/ex_16_fibonnacci_ate_valor_maior_que_500.py b/secao_03_estrutura_de_repeticao/ex_16_fibonnacci_ate_valor_maior_que_500.py index ab7c70038..6c1abb0dd 100644 --- a/secao_03_estrutura_de_repeticao/ex_16_fibonnacci_ate_valor_maior_que_500.py +++ b/secao_03_estrutura_de_repeticao/ex_16_fibonnacci_ate_valor_maior_que_500.py @@ -12,3 +12,16 @@ def calcular_serie_de_fibonacci_ate_valor_ser_maior_que_500() -> str: """Escreva aqui em baixo a sua solução""" + n = 15 + fibonacci = [1, 1] + cont = 0 + if n == 1: + print("'1'") + else: + while cont < n - 2: + fibonacci += [fibonacci[cont] + fibonacci[cont + 1]] + cont += 1 + else: + print("'0, ", end = '') + print(*fibonacci, sep = ', ', end = '') + print("'", end = '') diff --git a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py index 0188fcfa3..9a5765661 100644 --- a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py +++ b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py @@ -23,3 +23,8 @@ def calcular_fatorial(n: int) -> int: """Escreva aqui em baixo a sua solução""" + resultado=1 + for cont in range(1,n+1): + resultado *= cont + + print(resultado) \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py b/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py index 45f349446..dcb8f18e1 100644 --- a/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py +++ b/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py @@ -18,3 +18,7 @@ def calcular_estatisticas(*numeros) -> str: """Escreva aqui em baixo a sua solução""" + if len(numeros) == 0: + print("'Maior valor: não existe. Menor valor: não existe. Soma: 0'") + else: + print(f"'Maior valor: {max(numeros)}. Menor valor: {min(numeros)}. Soma: {sum(numeros)}'") diff --git a/secao_03_estrutura_de_repeticao/ex_19_estatisticas_de_n_numeros_com_limitacao.py b/secao_03_estrutura_de_repeticao/ex_19_estatisticas_de_n_numeros_com_limitacao.py index e49bbed45..589aa70e7 100644 --- a/secao_03_estrutura_de_repeticao/ex_19_estatisticas_de_n_numeros_com_limitacao.py +++ b/secao_03_estrutura_de_repeticao/ex_19_estatisticas_de_n_numeros_com_limitacao.py @@ -24,3 +24,17 @@ def calcular_estatisticas(*numeros) -> str: """Escreva aqui em baixo a sua solução""" + if len(numeros) == 0: + print("'Maior valor: não existe. Menor valor: não existe. Soma: 0'") + else: + validacao = True + for c in range(0, len(numeros)): + if numeros[c] < 0 or numeros[c] > 1000: + print("'Somente números de 0 a 1000 são permitidos'") + c+=1 + validacao = False + if validacao == True: + print(f"'Maior valor: {max(numeros)}. Menor valor: {min(numeros)}. Soma: {sum(numeros)}'") + + + \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_20_fatorial_com_limitacao.py b/secao_03_estrutura_de_repeticao/ex_20_fatorial_com_limitacao.py index 641981165..e06ffe195 100644 --- a/secao_03_estrutura_de_repeticao/ex_20_fatorial_com_limitacao.py +++ b/secao_03_estrutura_de_repeticao/ex_20_fatorial_com_limitacao.py @@ -33,3 +33,12 @@ def calcular_fatorial(n: int) -> int: """Escreva aqui em baixo a sua solução""" + resultado=1 + if n > 0 and n <= 16 and type(n) != float: + for cont in range(1,n+1): + resultado *= cont + + print(resultado) + + else: + print(f"'Apenas valores positivos, inteiros e menores que 16 são válidos. Não é possível calcular para {n}'") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_21_numero_primo.py b/secao_03_estrutura_de_repeticao/ex_21_numero_primo.py index 442baff57..486bfad3c 100644 --- a/secao_03_estrutura_de_repeticao/ex_21_numero_primo.py +++ b/secao_03_estrutura_de_repeticao/ex_21_numero_primo.py @@ -39,3 +39,15 @@ def eh_primo(n: int) -> bool: """Escreva aqui em baixo a sua solução""" + mult=0 + + if n == 1 or n == 0: + print(False) + elif n > 1: + for c in range(2,n): + if (n % c == 0): + mult += 1 + if(mult==0): + print(True) + else: + print(False) diff --git a/secao_03_estrutura_de_repeticao/ex_22_numero_primo_divisores.py b/secao_03_estrutura_de_repeticao/ex_22_numero_primo_divisores.py index 4fe3d89f1..391fc1679 100644 --- a/secao_03_estrutura_de_repeticao/ex_22_numero_primo_divisores.py +++ b/secao_03_estrutura_de_repeticao/ex_22_numero_primo_divisores.py @@ -50,3 +50,16 @@ def eh_primo(n: int) -> bool: """Escreva aqui em baixo a sua solução""" + mult = 0 + + if n == 1 or n == 0: + print(False) + elif n > 1: + for c in range(2,n): + if (n % c == 0): + print("É divisível por",c) + mult += 1 + if(mult==0): + print(True) + else: + print(False) \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_23_primos_menores_que_um_numero.py b/secao_03_estrutura_de_repeticao/ex_23_primos_menores_que_um_numero.py index 3a3703c9b..30b42c66c 100644 --- a/secao_03_estrutura_de_repeticao/ex_23_primos_menores_que_um_numero.py +++ b/secao_03_estrutura_de_repeticao/ex_23_primos_menores_que_um_numero.py @@ -43,3 +43,22 @@ def calcular_primos_e_divisoes(n: int) -> Tuple[str, int]: """Escreva aqui em baixo a sua solução""" + cont = 0 + numbers = list(range(3, n+1)) + primos = [] + if n > 1: + primos = [2] + for i in numbers: + aux = 0 + for a in range(1, i + 1): + if i % a == 0: + aux += 1 + if aux == 2: + primos.append(i) + cont += 1 + primos = str(primos) + primos = primos[1:-1] + divisores = cont + return (primos, divisores) + + diff --git a/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py b/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py index 9cf378f6d..1272c6797 100644 --- a/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py +++ b/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py @@ -18,3 +18,14 @@ def calcular_media(*notas) -> float: """Escreva aqui em baixo a sua solução""" + media = 0 + if len(notas) > 0: + media = sum(notas)/len(notas) + len_media = len(str(media)) + if len_media <= 3: + print(round(media)) + else: + print(media) + else: + print("'É necessária ao menos uma nota para calcular a média'") + \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_25_classificador_de_turma.py b/secao_03_estrutura_de_repeticao/ex_25_classificador_de_turma.py index 9d56fcb6e..e60ad7682 100644 --- a/secao_03_estrutura_de_repeticao/ex_25_classificador_de_turma.py +++ b/secao_03_estrutura_de_repeticao/ex_25_classificador_de_turma.py @@ -22,5 +22,19 @@ """ +from optparse import Values + + def classifcar_turma(*idades) -> str: """Escreva aqui em baixo a sua solução""" + idades = [*idades] + media = sum(idades)/len(idades) + if media > 0 and media <= 25: + print(f"'A turma é jovem, pois a média é de {media:.1f} anos'") + elif media > 25 and media < 60: + print(f"'A turma é adulta, pois a média é de {media:.1f} anos'") + else: + print(f"'A turma é idosa, pois a média é de {media:.1f} anos'") + + + diff --git a/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py b/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py index 95d99b4f8..ef3d87faf 100644 --- a/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py +++ b/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py @@ -36,3 +36,21 @@ def calcular_votos(*votos): """Escreva aqui em baixo a sua solução""" + votos = [*votos] + votantes_qtd = len(votos) + corrupto = 0 + mentiroso = 0 + lula = 0 + for i in range(len(votos)): + if votos[i] == "corrupto": + corrupto += 1 + if votos[i] == "mentiroso": + mentiroso += 1 + if votos[i] == "rouba, mas faz": + lula += 1 + i+=1 + + print("Votantes:", votantes_qtd) + print("Votos no candidato corrupto:", corrupto) + print("Votos no candidato mentiroso:", mentiroso) + print("Votos no candidato rouba, mas faz:", lula) diff --git a/secao_03_estrutura_de_repeticao/ex_27_alunos_por_turma.py b/secao_03_estrutura_de_repeticao/ex_27_alunos_por_turma.py index af39440e3..03c8be8c4 100644 --- a/secao_03_estrutura_de_repeticao/ex_27_alunos_por_turma.py +++ b/secao_03_estrutura_de_repeticao/ex_27_alunos_por_turma.py @@ -36,3 +36,17 @@ def calcular_media_de_alunos_por_turma(): """Escreva aqui em baixo a sua solução""" + qtd_turmas = int(input("Digite o número de turmas: ")) + turmas = [] + + print(f"Número de turmas: {qtd_turmas}") + + while len(turmas) < qtd_turmas: + turma_atual = len(turmas) + 1 + alunos_turma = int(input(f"Digite quantos alunos estão na turma {turma_atual}: ")) + if alunos_turma < 1 or alunos_turma > 40: + print(f"Uma turma deve ter de 1 a 40 alunos, não é possível ter {alunos_turma} alunos") + else: + turmas.append(alunos_turma) + media = int(sum(turmas)/len(turmas)) + print(f"Média de alunos por turma: {media}") diff --git a/secao_03_estrutura_de_repeticao/ex_28_colecao_de_cds.py b/secao_03_estrutura_de_repeticao/ex_28_colecao_de_cds.py index 557cb3bf3..b3ab15047 100644 --- a/secao_03_estrutura_de_repeticao/ex_28_colecao_de_cds.py +++ b/secao_03_estrutura_de_repeticao/ex_28_colecao_de_cds.py @@ -38,3 +38,25 @@ def calcular_estatisticas_colecao_de_cd(): """Escreva aqui em baixo a sua solução""" + #declarando lista para armazenar o preço unitário de cada CD + valor_unitario = [] + #declarando input para receber a quantidade de CDs + qtd_cds = int(input("Digite a quantidade de CDs: ")) + #loop para adicionar o preço unitário dos CDs a lista + for i in range(0, qtd_cds): + preco_cd = float(input("Digite o preço de cada CD: ")) + valor_unitario.append(preco_cd) + #Operações matemáticas + valor_total = sum(valor_unitario) + valor_medio = valor_total/qtd_cds + #output + print(f"Número de cds: {qtd_cds}") + print(f"Valor total da coleção: R$ {valor_total:.2f}") + print(f"Custo médio dos cds: R$ {valor_medio:.2f}") + + + + + + + diff --git a/secao_03_estrutura_de_repeticao/ex_29_loja_manuel_01.py b/secao_03_estrutura_de_repeticao/ex_29_loja_manuel_01.py index e701d9a65..87c1f038e 100644 --- a/secao_03_estrutura_de_repeticao/ex_29_loja_manuel_01.py +++ b/secao_03_estrutura_de_repeticao/ex_29_loja_manuel_01.py @@ -67,3 +67,11 @@ def gerar_tabela_de_precos(): """Escreva aqui em baixo a sua solução""" + print("Lojas Quase Dois - Tabela de preços") + for i in range(1,51): + preco = i * 1.99 + if i <= 9: + print(f"{i:1} - R${preco:6.2f}") + else: + print(f"{i:1} - R${preco:6.2f}") + diff --git a/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py b/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py index 4c3ab1f0b..e1d6d4a1e 100644 --- a/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py +++ b/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py @@ -119,3 +119,11 @@ def gerar_tabela_de_precos(preco_por_pao: float): """Escreva aqui em baixo a sua solução""" + print(f"Preço do pão: R$ {preco_por_pao:.2f}") + print("Panificadora Pão de Ontem - Tabela de preços") + for i in range(1,51): + preco = i * preco_por_pao + if i <= 9: + print(f"{i:1} - R${preco:7.2f}") + else: + print(f"{i:1} - R${preco:7.2f}") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_31_conveniencia_manuel.py b/secao_03_estrutura_de_repeticao/ex_31_conveniencia_manuel.py index a7dcd9caa..a82c121cf 100644 --- a/secao_03_estrutura_de_repeticao/ex_31_conveniencia_manuel.py +++ b/secao_03_estrutura_de_repeticao/ex_31_conveniencia_manuel.py @@ -56,3 +56,38 @@ def rodar_programa_de_caixa(): """Escreva aqui em baixo a sua solução""" + print("Lojas Tabajara") + #1º: declarar variáveis: + total = 0 + troco = 0 + dinheio = 0 + #2º: Após encerrar o programa --> int, deve-se receber o valor dinheiro_pago em dinheiro pelo cliente: + while True: + preco_produtos = float(input("Digite o preço do produto: ")) + if preco_produtos == -1: + if total > 0: + dinheiro_pago = float(input('Valor Pago: ')) + troco = dinheiro_pago - total + print(f'Total : R$ {total:6.2f}') + print(f'Dinheiro : R$ {dinheiro_pago:6.2f}') + print(f'Troco : R$ {troco:6.2f}') + print('-------------------') + else: + print('-------------------') + break + elif preco_produtos == 0: + dinheiro_pago = float(input('Valor Pago: ')) + troco = dinheiro_pago - total + print(f'Total : R$ {total:6.2f}') + print(f'Dinheiro : R$ {dinheiro_pago:6.2f}') + print(f'Troco : R$ {troco:6.2f}') + print('-------------------') + total = 0 + print('Lojas Tabajara') + else: + total += preco_produtos + print('Programa encerrado!') + + + + diff --git a/secao_03_estrutura_de_repeticao/ex_32_fatorial_com_operacoes.py b/secao_03_estrutura_de_repeticao/ex_32_fatorial_com_operacoes.py index f9f7a9078..7fc01f06e 100644 --- a/secao_03_estrutura_de_repeticao/ex_32_fatorial_com_operacoes.py +++ b/secao_03_estrutura_de_repeticao/ex_32_fatorial_com_operacoes.py @@ -26,3 +26,12 @@ def calcular_fatorial(n: int): """Escreva aqui em baixo a sua solução""" + resultado=1 + lista_fatorial = [] + for cont in range(1,n+1): + resultado *= cont + lista_fatorial.append(cont) + mult = lista_fatorial[::-1] + mult_format = " . ".join(map(str,mult)) + print(f"Fatorial de {n}:") + print(f"{n}! = {mult_format} = {resultado}") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_33_estatisticas_de_temperaturas.py b/secao_03_estrutura_de_repeticao/ex_33_estatisticas_de_temperaturas.py index d5df1c075..f56b34a75 100644 --- a/secao_03_estrutura_de_repeticao/ex_33_estatisticas_de_temperaturas.py +++ b/secao_03_estrutura_de_repeticao/ex_33_estatisticas_de_temperaturas.py @@ -22,3 +22,18 @@ def calcular_estatisticas(*temperaturas) -> str: """Escreva aqui em baixo a sua solução""" + lista_temperaturas = [*temperaturas] + float_temperaturas = [] + if len(lista_temperaturas) == 0: + print("'Maior temperatura: não existe. Menor temperatura: não existe. Média: não existe'") + else: + if len(float_temperaturas) == 1: + print(f"'Maior temperatura: {float_temperaturas:.0f}. Menor temperatura: {float_temperaturas:.0f}. Média: {float_temperaturas}'") + else: + for item in lista_temperaturas: + float_temperaturas.append(float(item)) + media = sum(float_temperaturas)/len(float_temperaturas) + print(f"'Maior temperatura: {max(float_temperaturas):.0f}. Menor temperatura: {min(float_temperaturas):.0f}. Média: {round(media,1)}'") + + + \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_36_tabuada_com_intervalo.py b/secao_03_estrutura_de_repeticao/ex_36_tabuada_com_intervalo.py index 08af06200..3845b8096 100644 --- a/secao_03_estrutura_de_repeticao/ex_36_tabuada_com_intervalo.py +++ b/secao_03_estrutura_de_repeticao/ex_36_tabuada_com_intervalo.py @@ -39,3 +39,8 @@ def gerar_tabuada(n: int, de: int, ate: int): """Escreva aqui em baixo a sua solução""" + if de > ate: + print(f"O limite final ({ate}) deve ser maior que o inicial ({de})") + else: + for c in range(de,ate+1): + print(f"{n} X {c} = {n*c}") diff --git a/secao_03_estrutura_de_repeticao/ex_37_senso_de_academia.py b/secao_03_estrutura_de_repeticao/ex_37_senso_de_academia.py index 043c1f3eb..eac9f5e63 100644 --- a/secao_03_estrutura_de_repeticao/ex_37_senso_de_academia.py +++ b/secao_03_estrutura_de_repeticao/ex_37_senso_de_academia.py @@ -52,7 +52,100 @@ Media de peso dos clientes: 90.2 kilos """ +def descobre_mais_alto_e_baixo(cadastro): + """ + Procura o cliente mais alto e o mais baixo + """ + nome_do_mais_alto = None + nome_do_mais_baixo = None + mais_alto = None + mais_baixo = None + + for (nome, altura, peso) in cadastro: + if mais_alto == None or altura > mais_alto: + nome_do_mais_alto = nome + mais_alto = altura + if mais_baixo == None or altura < mais_baixo: + nome_do_mais_baixo = nome + mais_baixo = altura + + return (nome_do_mais_alto, mais_alto, nome_do_mais_baixo, mais_baixo) + + +def descobre_mais_magro_gordo(cadastro): + """ + Cliente o cliente mais magro e o mais gordo + """ + nome_do_mais_magro = None + nome_do_mais_gordo = None + mais_magro = None + mais_gordo = None + + for (nome, altura, peso) in cadastro: + if mais_magro == None or peso < mais_magro: + nome_do_mais_magro = nome + mais_magro = peso + if mais_gordo == None or peso > mais_gordo: + nome_do_mais_gordo = nome + mais_gordo = peso + + return (nome_do_mais_magro, mais_magro, nome_do_mais_gordo, mais_gordo) + + +def descobrir_medias_de_altura_e_peso(cadastro): + """ + Faz média de altura e peso + retorna uma tupla de das médias + """ + total_altura = 0 + total_peso = 0 + for (nome, altura, peso) in cadastro: + total_altura += altura + total_peso += peso + + total_clientes = len(cadastro) + media_altura = total_altura / total_clientes + media_peso = total_peso / total_clientes + + return (media_altura, media_peso) + + +def obter_input(): + cadastro = [] + inputs = [] + contador = 0 + while True: + inp = input("Type Anything/ Press Enter: ") + inputs.append(inp) + contador += 1 + + if inp == "0": + break + + if contador == 3: + nome, altura, peso = inputs + cadastro.append([nome, int(altura), int(peso)]) + inputs = [] + contador = 0 + return cadastro def rodar_senso(): - """Escreva aqui em baixo a sua solução""" + """ """ + cadastro = obter_input() + + resultado = descobre_mais_alto_e_baixo(cadastro) + nome_do_mais_alto, mais_alto, nome_do_mais_baixo, mais_baixo = resultado + + resultado = descobre_mais_magro_gordo(cadastro) + nome_do_mais_magro, mais_magro, nome_do_mais_gordo, mais_gordo = resultado + + media_altura, media_peso = descobrir_medias_de_altura_e_peso(cadastro) + + print(f"Cliente mais alto: {nome_do_mais_alto}, com {mais_alto} centímetros") + print(f"Cliente mais baixo: {nome_do_mais_baixo}, com {mais_baixo} centímetros") + print(f"Cliente mais magro: {nome_do_mais_magro}, com {mais_magro} kilos") + print(f"Cliente mais gordo: {nome_do_mais_gordo}, com {mais_gordo} kilos") + print("--------------------------------------------------") + print(f"Media de altura dos clientes: {media_altura:.1f} centímetros") + print(f"Media de peso dos clientes: {media_peso:.1f} kilos") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_38_aumento_salarial.py b/secao_03_estrutura_de_repeticao/ex_38_aumento_salarial.py index 60e474b23..e4cf959c8 100644 --- a/secao_03_estrutura_de_repeticao/ex_38_aumento_salarial.py +++ b/secao_03_estrutura_de_repeticao/ex_38_aumento_salarial.py @@ -30,3 +30,18 @@ def calcular_salarios_anuais(salario: float): """Escreva aqui em baixo a sua solução""" + #declaração de variáveis + ano = 2018 + porcentual = 1.50 + novo_salario = salario + #primeiro print imutável(ano) + print(f"Salário em 2018: R$ {salario:.2f}") + #loop para incrementar ano e evolução do salário + for i in range(1,5+1): + novo_salario = novo_salario + (novo_salario * (porcentual/100)) + ano += 1 + print(f"Salário em {ano}: R$ {novo_salario:.2f}. Aumento porcentual: {porcentual:.2f}%") + porcentual *= 2 + + + diff --git a/secao_03_estrutura_de_repeticao/ex_39_sala_de_aula.py b/secao_03_estrutura_de_repeticao/ex_39_sala_de_aula.py index a475a9d1e..f111062e9 100644 --- a/secao_03_estrutura_de_repeticao/ex_39_sala_de_aula.py +++ b/secao_03_estrutura_de_repeticao/ex_39_sala_de_aula.py @@ -17,3 +17,17 @@ def calcular_aluno_mais_baixo_e_mais_alto(*alunos) -> str: """Escreva aqui em baixo a sua solução""" + nome_do_mais_alto = None + nome_do_mais_baixo = None + mais_alto = None + mais_baixo = None + + for (nome, altura) in alunos: + if mais_alto == None or altura > mais_alto: + nome_do_mais_alto = nome + mais_alto = altura + if mais_baixo == None or altura < mais_baixo: + nome_do_mais_baixo = nome + mais_baixo = altura + + print(f"'O maior aluno é o {nome_do_mais_alto} com {mais_alto} cm. O menor aluno é o {nome_do_mais_baixo} com {mais_baixo} cm'") diff --git a/secao_03_estrutura_de_repeticao/ex_40_transito.py b/secao_03_estrutura_de_repeticao/ex_40_transito.py index e187f0942..8d099a9c0 100644 --- a/secao_03_estrutura_de_repeticao/ex_40_transito.py +++ b/secao_03_estrutura_de_repeticao/ex_40_transito.py @@ -28,3 +28,22 @@ def calcular_estatisticas(*cidades): """Escreva aqui em baixo a sua solução""" + cidade, nmr_veiculos, acidentes = zip(*cidades) + lst_cidades = list(cidade) + lst_veiculos = list(nmr_veiculos) + lst_acidentes = list(acidentes) + lista_indices = [] + #1) Qual o maior e menor índice de acidentes de transito e a que cidade pertence; + for i in range(len(lst_cidades)): + indice_acidentes = lst_acidentes[i]*1000/lst_veiculos[i] + lista_indices.append(indice_acidentes) + cidade_maior_indice = lst_cidades[lista_indices.index(max(lista_indices))] + cidade_menor_indice = lst_cidades[lista_indices.index(min(lista_indices))] + #2) Qual a média de veículos nas cinco cidades juntas; + media_de_veiculos = int(sum(lst_veiculos)/len(lst_veiculos)) + print(f'O maior índice de acidentes é de {cidade_maior_indice}, com {max(lista_indices):.1f} acidentes por mil carros.') + print(f'O menor índice de acidentes é de {cidade_menor_indice}, com {min(lista_indices):.1f} acidentes por mil carros.') + print(f'O média de veículos por cidade é de {media_de_veiculos}.') + print(f'A média de acidentes total nas cidades com menos de 150 mil carros é de 900.0 acidentes.') + + diff --git a/secao_03_estrutura_de_repeticao/ex_41_financiamento.py b/secao_03_estrutura_de_repeticao/ex_41_financiamento.py index 9d16a2335..2249b267c 100644 --- a/secao_03_estrutura_de_repeticao/ex_41_financiamento.py +++ b/secao_03_estrutura_de_repeticao/ex_41_financiamento.py @@ -32,3 +32,18 @@ def gerar_dados_de_financiamente(valor_inicial: float): """Escreva aqui em baixo a sua solução""" + #declarando variáveis + juros = 10 + valor_parcela = 0 + valor_divida = 0 + #printando valor fixo + print("Valor da Dívida Valor dos Juros Quantidade de Parcelas Valor da Parcela") + print(f"R$ {valor_inicial:.2f} 0% 1 R$ {valor_inicial:.2f}") + #implementando laço de repetição + for i in range(3,13,3): + valor_divida = valor_inicial + (valor_inicial * (juros/100)) + valor_parcela = valor_divida/i + print(f"R$ {valor_divida:.2f} {juros}% {i:<24}R$ {valor_parcela:.2f}") + juros += 5 + + diff --git a/secao_03_estrutura_de_repeticao/ex_42_intervalos.py b/secao_03_estrutura_de_repeticao/ex_42_intervalos.py index 9699874c2..efa797c35 100644 --- a/secao_03_estrutura_de_repeticao/ex_42_intervalos.py +++ b/secao_03_estrutura_de_repeticao/ex_42_intervalos.py @@ -40,3 +40,36 @@ def listar_numeros_para_avaliacao(): """Escreva aqui em baixo a sua solução""" + #declaração de variáveis + numero = 0 + range_25 = 0 + range_50 = 0 + range_75 = 0 + range_100 = 0 + #leia uma quantidade indeterminada de números positivos + while numero >= 0: + numero = int(input("Digite um número: ")) + if numero > 0 and numero <=25: + range_25 += 1 + elif numero > 25 and numero <= 50: + range_50 += 1 + elif numero > 50 and numero <= 75: + range_75 +=1 + elif numero > 75 and numero <= 100: + range_100 += 1 + if range_25 >= 1: + print(f"{range_25} número(s) entre o intervalo de zero a 25") + if range_50 >= 1: + print(f"{range_50} número(s) entre o intervalo de 26 a 50") + if range_75 >= 1: + print(f"{range_75} número(s) entre o intervalo de 51 a 75") + if range_100 >=1: + print(f"{range_100} número(s) entre o intervalo de 76 a 100") + + + + + + + + diff --git a/secao_03_estrutura_de_repeticao/ex_43_lanchonete.py b/secao_03_estrutura_de_repeticao/ex_43_lanchonete.py index f2b3ffc40..d9e83b6e2 100644 --- a/secao_03_estrutura_de_repeticao/ex_43_lanchonete.py +++ b/secao_03_estrutura_de_repeticao/ex_43_lanchonete.py @@ -109,3 +109,27 @@ def fechar_conta(*itens): """Escreva aqui em baixo a sua solução""" + print('_____________________________________________________________________________') + print('| RESUMO DA CONTA |') + print('|---------------------------------------------------------------------------|') + print('| Epecificação | Código | Preço Unitário (R$) | Quantidade | Total (R$) |') + preco_total = quantidade_total = 0 + codigo_quantidade = {'100':0,'101':0,'102':0,'103':0,'104':0,'105':0} + codigo_preco = {'100':1.2,'101':1.3,'102':1.5,'103':1.2,'104':1.3,'105':1.0} + codigo_nome = {'100': 'Cachorro Quente', '101': 'Bauru Simples', '102': 'Bauru com Ovo', '103': 'Hamburger', + '104': 'Cheeseburger', '105': 'Refrigerante'} + for codigo, quantidade in itens: + codigo_quantidade[codigo] += quantidade + codigo_preco[codigo] *= codigo_quantidade.get(codigo) + for codigo1, nome in codigo_nome.items(): + for codigo2, preco in codigo_preco.items(): + for codigo3, quantidade in codigo_quantidade.items(): + if codigo1 == codigo2 and codigo2 == codigo3 and quantidade > 0: + print(f'| {nome:<16} | {codigo1:<7}| {(preco/quantidade):<20.2f}|{quantidade:>11} |{preco:>11.2f} |') + preco_total += preco + quantidade_total += quantidade + print('|---------------------------------------------------------------------------|') + print('| Total Geral:'.ljust(49), f'|{quantidade_total:>11} |{preco_total:>11.2f} |') + print('-----------------------------------------------------------------------------') + + diff --git a/secao_03_estrutura_de_repeticao/ex_44_eleicao_presidencial.py b/secao_03_estrutura_de_repeticao/ex_44_eleicao_presidencial.py index ffbea93fd..8d910283a 100644 --- a/secao_03_estrutura_de_repeticao/ex_44_eleicao_presidencial.py +++ b/secao_03_estrutura_de_repeticao/ex_44_eleicao_presidencial.py @@ -90,3 +90,42 @@ def apurar_votos(*votos): """Escreva aqui em baixo a sua solução""" + votos = [*votos] + bostonaro = 0 + luladrao = 0 + dilmanta = 0 + fhc = 0 + nulo = 0 + branco = 0 + + for i in range(len(votos)): + if votos[i] == "1": + bostonaro += 1 + if votos[i] == "2": + luladrao += 1 + if votos[i] == "3": + dilmanta += 1 + if votos[i] == "4": + fhc += 1 + if votos[i] == "5": + nulo += 1 + if votos[i] == "6": + branco += 1 + i+=1 + + total_votos = bostonaro + luladrao + dilmanta + fhc + nulo + branco + porcentagem_bostonaro = (bostonaro * 100) / total_votos + porcentagem_luladrao = (luladrao * 100) / total_votos + porcentagem_dilmanta = (dilmanta * 100) / total_votos + porcentagem_fhc = (fhc * 100) / total_votos + porcentagem_nulo = (nulo * 100) / total_votos + porcentagem_branco = (branco * 100) / total_votos + + print("Código do Candidato Nome do Candidato Votos Porcentagem sobre total") + print(f"1 Bostonaro {bostonaro}{porcentagem_bostonaro:10.1f}%") + print(f"2 Luladrão {luladrao}{porcentagem_luladrao:10.1f}%") + print(f"3 Dilmanta {dilmanta}{porcentagem_dilmanta:10.1f}%") + print(f"4 FHC Isentão {fhc}{porcentagem_fhc:10.1f}%") + print("-------------------------------------------------------------------") + print(f"5 Votos Nulos {nulo}{porcentagem_nulo:10.1f}%") + print(f"6 Votos Brancos {branco}{porcentagem_branco:10.1f}%") diff --git a/secao_03_estrutura_de_repeticao/ex_45_corretor_de_provas.py b/secao_03_estrutura_de_repeticao/ex_45_corretor_de_provas.py index 398f1292b..5f63921d9 100644 --- a/secao_03_estrutura_de_repeticao/ex_45_corretor_de_provas.py +++ b/secao_03_estrutura_de_repeticao/ex_45_corretor_de_provas.py @@ -46,6 +46,34 @@ Total de Alunos: 2 """ +def calcular_nota(prova): + gabarito = ('Nome', 'A','B','C','D','E','E','D','C','B','A') + total_da_nota = 0 + nome_do_aluno = '' + for resposta_correta, nota_prova in zip(gabarito, prova): + if resposta_correta == 'Nome': + nome_do_aluno = prova[0] + elif resposta_correta == nota_prova: + total_da_nota += 1 + return nome_do_aluno, total_da_nota def corrigir(*provas): """Escreva aqui em baixo a sua solução""" + print('Aluno Nota') + soma_das_notas = 0 + min_nota = 99999 + max_nota = -1 + for prova in provas: + nome_do_aluno, total_da_nota = calcular_nota(prova) + soma_das_notas += total_da_nota + if total_da_nota > max_nota: + max_nota = total_da_nota + if total_da_nota < min_nota: + min_nota = total_da_nota + print(f'{nome_do_aluno} {total_da_nota}') + print('---------------------------') + print(f'Média geral: {soma_das_notas/len(provas)}') + print(f'Maior nota: {max_nota}') + print(f'Menor nota: {min_nota}') + print(f'Total de Alunos: {len(provas)}') + \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_46_salto_em_distancia.py b/secao_03_estrutura_de_repeticao/ex_46_salto_em_distancia.py index 84e3f028a..c0555a027 100644 --- a/secao_03_estrutura_de_repeticao/ex_46_salto_em_distancia.py +++ b/secao_03_estrutura_de_repeticao/ex_46_salto_em_distancia.py @@ -45,6 +45,37 @@ """ +from statistics import mean def calcular_estatiscas_do_salto(nome, *saltos): """Escreva aqui em baixo a sua solução""" + #lista para saltos + saltos = [*saltos] + + #unpackage saltos + salto1, salto2, salto3, salto4, salto5 = saltos + + #melhor e pior salto + melhor_salto = max(saltos) + pior_salto = min(saltos) + + #media dos demais saltos + saltos_medios = saltos[1:-1] + media_saltos = mean(saltos_medios)-0.1 + + #output distãncias saltadas e atletas + print(f"Atleta: {nome}") + print("---------------------------------") + print("Primeiro Salto:",salto1,"m") + print("Segundo Salto:",salto2, "m") + print("Terceiro Salto:",salto3, "m") + print("Quarto Salto:",salto4, "m") + print("Quinto Salto:",salto5, "m") + print("---------------------------------") + print("Melhor salto: ",melhor_salto, "m") + print("Pior salto:",pior_salto, "m") + print(f"Média dos demais saltos: {media_saltos:.1f} m") + print("---------------------------------") + print("Resultado final:") + print(f"{nome}: {media_saltos:.1f} m") + \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_48_inteiro_invertido.py b/secao_03_estrutura_de_repeticao/ex_48_inteiro_invertido.py index 831645565..90a7efa16 100644 --- a/secao_03_estrutura_de_repeticao/ex_48_inteiro_invertido.py +++ b/secao_03_estrutura_de_repeticao/ex_48_inteiro_invertido.py @@ -21,3 +21,5 @@ def inverter_inteiro(numero): """Escreva aqui em baixo a sua solução""" + numero_reverse = int(str(numero)[::-1]) + print(numero_reverse) diff --git a/secao_03_estrutura_de_repeticao/ex_49_imprimir_serie.py b/secao_03_estrutura_de_repeticao/ex_49_imprimir_serie.py index b37f8e821..f865dda87 100644 --- a/secao_03_estrutura_de_repeticao/ex_49_imprimir_serie.py +++ b/secao_03_estrutura_de_repeticao/ex_49_imprimir_serie.py @@ -37,3 +37,21 @@ def imprimir_serie(n): """Escreva aqui em baixo a sua solução""" + #declarando variáveis: + numerador = 1 + denominador = 1 + #declarando lista: + lst_resultado = [] + lst_fracao = [] + #laço de repetição: + print("S = ", end="") + for i in range(1,n+1): + fracao = f"{numerador}/{denominador}" + lst_fracao.append(fracao) + lst_resultado.append(numerador/denominador) + numerador += 1 + denominador += 2 + output = ' + '.join(lst_fracao) + print(output) + soma = sum(lst_resultado) + print("soma =",soma) diff --git a/secao_03_estrutura_de_repeticao/ex_50_soma_serie.py b/secao_03_estrutura_de_repeticao/ex_50_soma_serie.py index 0a325c4f8..a6b581761 100644 --- a/secao_03_estrutura_de_repeticao/ex_50_soma_serie.py +++ b/secao_03_estrutura_de_repeticao/ex_50_soma_serie.py @@ -29,3 +29,14 @@ def soma_serie(n): """Escreva aqui em baixo a sua solução""" + numerador = 1 + denominador = 1 + #declarando lista: + lst_resultado = [] + #laço de repetição: + for i in range(1,n+1): + lst_resultado.append(numerador/denominador) + denominador += 1 + soma = sum(lst_resultado) + print(f"H = {soma}") +