diff --git a/.github/workflows/corretor_de_exercicios_secao_01.yml b/.github/workflows/corretor_de_exercicios_secao_01.yml index ae41e58b9..2bc5c6637 100644 --- a/.github/workflows/corretor_de_exercicios_secao_01.yml +++ b/.github/workflows/corretor_de_exercicios_secao_01.yml @@ -10,6 +10,308 @@ jobs: build: runs-on: ubuntu-latest steps: +<<<<<<< HEAD + - uses: actions/checkout@v2 + - name: Configuração de Python 3.9 + uses: actions/setup-python@v1 + with: + python-version: 3.9 + - 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 02 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 + - 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 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 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 19 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_19_decomposicao_de_numero.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 + - name: Correção do Exercício 21 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_21_troco.py + - name: Correção do Exercício 22 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_22_par_ou_impar.py + - name: Correção do Exercício 23 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_23_inteiro_ou_decimal.py + - name: Correção do Exercício 24 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_24_operacao.py + - name: Correção do Exercício 25 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_25_sherlock.py + - name: Correção do Exercício 26 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_26_posto_de_gasolina.py + - name: Correção do Exercício 27 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_27_hortifruti.py + - name: Correção do Exercício 28 da seção de Estrutura de Decisão + if: always() + run: | + python -m doctest -f secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py + - name: Correção do Exercício 01 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_01_numero_valido.py + - name: Correção do Exercício 02 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py + - name: Correção do Exercício 03 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_03_validador_de_cadastro.py + - name: Correção do Exercício 04 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py + - name: Correção do Exercício 05 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_05_crescimento_populacional_parametrizavel.py + - name: Correção do Exercício 06 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_06_numeros_1_a_20.py + - name: Correção do Exercício 07 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_07_maior_de_5_numeros.py + - name: Correção do Exercício 08 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_08_soma_e_media_de_5_numeros.py + - name: Correção do Exercício 09 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py + - name: Correção do Exercício 10 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py + - name: Correção do Exercício 11 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py + - name: Correção do Exercício 12 da seção de Estrutura de Repetição + if: always() + run: | +<<<<<<< HEAD:.github/workflows/corretor_de_exercicios.yml + python -m doctest -f secao_03_estrutura_de_repeticao/ex_12_taboada.py +======= + python -m doctest -f secao_03_estrutura_de_repeticao/ex_12_tabuada.py + + - name: Correção do Exercício 13 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_13_potenciacao.py + - name: Correção do Exercício 14 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py + - name: Correção do Exercício 15 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py + - name: Correção do Exercício 16 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_16_fibonnacci_ate_valor_maior_que_500.py + - name: Correção do Exercício 17 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_17_fatorial.py + - name: Correção do Exercício 18 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py +<<<<<<< HEAD:.github/workflows/corretor_de_exercicios.yml +======= + - name: Correção do Exercício 19 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_19_estatisticas_de_n_numeros_com_limitacao.py + - name: Correção do Exercício 20 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_20_fatorial_com_limitacao.py + - name: Correção do Exercício 21 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_21_numero_primo.py + - name: Correção do Exercício 22 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_22_numero_primo_divisores.py + - name: Correção do Exercício 23 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_23_primos_menores_que_um_numero.py + - name: Correção do Exercício 24 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py + - name: Correção do Exercício 25 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_25_classificador_de_turma.py + - name: Correção do Exercício 26 da seção de Estrutura de Repetição + if: always() + run: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py + +======= - uses: actions/checkout@v2 - name: Configuração de Python 3.9 uses: actions/setup-python@v1 @@ -91,3 +393,4 @@ jobs: if: always() run: | + diff --git a/.github/workflows/corretor_de_exercicios_secao_05.yml b/.github/workflows/corretor_de_exercicios_secao_05.yml index 89c00367c..21ceadaee 100644 --- a/.github/workflows/corretor_de_exercicios_secao_05.yml +++ b/.github/workflows/corretor_de_exercicios_secao_05.yml @@ -19,3 +19,7 @@ jobs: if: always() run: | python -m doctest -f secao_05_exercicios_funcoes/ex_01_piramide.py + - name: Correção do Exercício 14 da seção de Funções + if: always() + run: | + python -m doctest -f secao_05_exercicios_funcoes/ex_14_quadro_magico.py diff --git a/.gitignore b/.gitignore index b6e47617d..f980b08bb 100644 --- a/.gitignore +++ b/.gitignore @@ -126,4 +126,5 @@ venv.bak/ dmypy.json # Pyre type checker -.pyre/ +.pyre +./idea diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..13566b81b --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..105ce2da2 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/lista-de-exercicios-python-brasil.iml b/.idea/lista-de-exercicios-python-brasil.iml new file mode 100644 index 000000000..8b8c39547 --- /dev/null +++ b/.idea/lista-de-exercicios-python-brasil.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..d1e22ecb8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..82ce86b63 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_01_alo_mundo.py b/secao_01_estrutura_sequencial/ex_01_alo_mundo.py index b9b0821a6..ace70a5bc 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..98fe4ca93 100644 --- a/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py +++ b/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py @@ -13,4 +13,6 @@ def escreva_um_numero(): """Escreva aqui em baixo a sua solução""" + num = input('') + print('O número informado foi', 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..b776d3813 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 @@ -15,3 +15,6 @@ def imprima_a_soma_de_dois_numeros(): """Escreva aqui em baixo a sua solução""" + x = int(input('')) + y = int(input('')) + print('A soma dos dois números informados é', x + y) diff --git a/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py b/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py index a1b189cd5..8981da9eb 100644 --- a/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py +++ b/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py @@ -15,4 +15,11 @@ def calcular_media(): """Escreva aqui em baixo a sua solução""" + soma = 0 + for i in range(0, 4): + num = int(input('')) + soma += num + media = soma / 4 + + 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..d1141bcf6 100644 --- a/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py +++ b/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py @@ -17,3 +17,6 @@ def converter_metros_para_centimetros(): """Escreva aqui em baixo a sua solução""" + k = float(input('')) + resultado = f'Transformando para centímetros dá {k * 100:.1f} cm' + print(resultado) \ 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..efc651c51 100644 --- a/secao_01_estrutura_sequencial/ex_06_area_circulo.py +++ b/secao_01_estrutura_sequencial/ex_06_area_circulo.py @@ -18,3 +18,6 @@ def calcular_area_de_circulo(): """Escreva aqui em baixo a sua solução""" + area= float(input('')) + resultado = (area**2) * 3.1415 + print(f'A área do círculo com esse raio é: {resultado:.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..2aac43421 100644 --- a/secao_01_estrutura_sequencial/ex_07_area_quadrado.py +++ b/secao_01_estrutura_sequencial/ex_07_area_quadrado.py @@ -20,3 +20,8 @@ def calcular_area_de_quadrado(): """Escreva aqui em baixo a sua solução""" + lado = float(input('')) + area = lado**2 + dobro = area * 2 + print(f'A área do quadrado com esse lado é: {area:.2f}') + print(f'O dobro da aŕea do quadrado é: {dobro:.2f}') \ No newline at end of file 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..8c58e80d4 100644 --- a/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py +++ b/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py @@ -17,3 +17,6 @@ def calcular_salario(): """Escreva aqui em baixo a sua solução""" + horas = float(input('')) + num_Trab = float(input('')) + print(f'Seu salário desse mês é {(horas * num_Trab):.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..3a04b4c2f 100644 --- a/secao_01_estrutura_sequencial/ex_09_fahrenheit_para_celsius.py +++ b/secao_01_estrutura_sequencial/ex_09_fahrenheit_para_celsius.py @@ -19,3 +19,6 @@ def transformar_para_celsius(): """Escreva aqui em baixo a sua solução""" + F = int(input('')) + C = 5 * ((F - 32) / 9) + print(f'Essa temperatura é de {C:.0f} Celsius') 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..00709e620 100644 --- a/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py +++ b/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py @@ -18,3 +18,6 @@ def transformar_para_fahrenheit(): """Escreva aqui em baixo a sua solução""" + celsius = int(input('')) + F = celsius * 1.8 + 32 + print(f'Essa temperatura é de {F:.0f} Fahrenheit') \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py b/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py index 09bdbbffd..05b7770bc 100644 --- a/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py +++ b/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py @@ -22,5 +22,16 @@ def calcular_formulas(): """Escreva aqui em baixo a sua solução""" + primary = int(input('')) + second = int(input('')) + three = float(input('')) + question_one = (2 * primary) * (second / 2) + question_two = (3 * primary) + three + + question_three = (three**3) + + print(f'O produto do dobro do primeiro com metade do segundo é {question_one:.2f}') + print(f'A soma do triplo do primeiro com o terceiro é {question_two:.2f}') + print(f'O terceiro elevado ao cubo é {question_three:.2f}') \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_12_peso_ideal.py b/secao_01_estrutura_sequencial/ex_12_peso_ideal.py index 1f8418fab..5acb14acc 100644 --- a/secao_01_estrutura_sequencial/ex_12_peso_ideal.py +++ b/secao_01_estrutura_sequencial/ex_12_peso_ideal.py @@ -19,3 +19,6 @@ def calcular_peso_ideal(): """Escreva aqui em baixo a sua solução""" + altura = float(input('')) + peso_ideal = (72.7*altura) - 58 + print(f'Seu peso ideal é {peso_ideal:.1f} kg') \ 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..7d1157a82 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 @@ -22,3 +22,9 @@ def calcular_peso_ideal(): """Escreva aqui em baixo a sua solução""" + altura = float(input('')) + alutura_man = (72.7*altura) - 58 + altura_girl = (62.1*altura) - 44.7 + + print(f'Seu peso ideal é {altura_girl:.1f} kg, se você for mulher') + print(f'Seu peso ideal é {alutura_man:.1f} kg, se você for homem') 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..575cc20bc 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 @@ -26,3 +26,11 @@ def calcular_peso_excedente_e_multa(): """Escreva aqui em baixo a sua solução""" + peso_peixe = float(input('')) + excesso = peso_peixe - 50 + + multa = excesso * 4.00 + + print(f'O peso excedente de peixes é de {excesso:.2f} kg') + + print(f'Por isso, a multa é de R$ {multa:.2f}') \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py b/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py index 901de0409..817c06b77 100644 --- a/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py +++ b/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py @@ -27,3 +27,16 @@ def calcular_assalto_no_salario(): """Escreva aqui em baixo a sua solução""" + hora = float(input('')) + salario_base = float(input('')) + + salario = salario_base * hora + imposto_de_renda = salario * 0.11 + desconto_inss = salario * 0.08 + sindicato = salario * 0.05 + liquido = salario - (imposto_de_renda + desconto_inss + sindicato) + print(f'+ Salário Bruto : {salario:.2f}' ) + print(f'- IR (11%) : R$ {imposto_de_renda:.2f}') + print(f'- INSS (8%) : R$ {desconto_inss:.2f}') + print(f'- Sindicato ( 5%) : R$ {sindicato:.2f}') + print(f'= Salário Liquido : R$ {liquido:.2f}') \ 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..debd29516 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 @@ -17,7 +17,15 @@ """ - +from math import ceil, floor def calcular_latas_e_preco_de_tinta(): """Escreva aqui em baixo a sua solução""" + parede_tam = int(input('')) + custo = 0 + total_latas = 0 + while parede_tam >= 0: + custo += 80.00 + total_latas += 1 + parede_tam -= 54 + print(f'Você deve comprar {total_latas} lata(s) tinta ao custo de R$ {custo:.2f}') 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..1aa07a527 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,23 @@ """ - +import math def calcular_latas_e_preco_de_tinta(): """Escreva aqui em baixo a sua solução""" + area_tinta = int(input('')) + custo_lata = 80.00 + custo_galo = 25.00 + + + litros_comprar = math.ceil((area_tinta / 6) * 1.10) + latas_comprar_lata = math.ceil((litros_comprar / 18) * 1.10) + lista_comprar_galao= round((litros_comprar / 3.6) * 1.10) + menor_custo_lata = litros_comprar // 18 + resto = (litros_comprar % 18) + sobra_lata = (latas_comprar_lata * 18) - litros_comprar + sobra_galao = ((lista_comprar_galao * 3.6) - litros_comprar) + total_tintas =(menor_custo_lata * 18 + resto * 3.6) - litros_comprar + print(f'Você deve comprar {litros_comprar} litros de tinta.') + print(f'Você pode comprar {latas_comprar_lata} lata(s) de 18 litros a um custo de R$ {custo_lata *latas_comprar_lata:.0f}. Vão sobrar {sobra_lata:.1f} litro(s) de tinta.') + print(f'Você pode comprar {lista_comprar_galao} lata(s) de 3.6 litros a um custo de R$ {custo_galo * lista_comprar_galao:.0f}. Vão sobrar {sobra_galao:.1f} litro(s) de tinta.') + print(f'Para menor custo, você pode comprar {menor_custo_lata} lata(s) de 18 litros e {resto} galão(ões) de 3.6 litros a um custo de R$ {(resto * 25) + (menor_custo_lata * 80)}. Vão sobrar {total_tintas:.1f} litro(s) de tinta.') \ 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..4302198b2 100644 --- a/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py +++ b/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py @@ -21,3 +21,7 @@ def calcular_tempo_de_download(): """Escreva aqui em baixo a sua solução""" + tamanho_arquivo = int(input('')) + velocidade_link = int(input('')) + tempo_download = tamanho_arquivo / (velocidade_link / 8) + print(f'O tempo aproximado do Download é: {round(tempo_download / 60)} minuto(s)') 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..5c3d69bb7 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,7 @@ def maior_de_dois_numeros(x, y): """Escreva aqui em baixo a sua solução""" + if x > y: + return x + else: + return 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..83e94a111 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,9 @@ def positivo_ou_negativo(n): """Escreva aqui em baixo a sua solução""" + if n < 0: + return 'negativo' + if n > 0: + return 'positivo' + if n == 0: + return 'não tem positivo nem negativo' \ No newline at end of file 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..3ce7971e7 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,9 @@ def f_ou_m(sexo): """Escreva aqui em baixo a sua solução""" + if sexo not in 'FM': + return 'Sexo inválido' + if sexo == 'F': + return 'F - Feminino' + if sexo == 'M': + return 'M - Masculino' 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..65a0059a7 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,8 @@ def vogal_ou_consoante(letra): """Escreva aqui em baixo a sua solução""" + letra = letra.upper() + if letra not in 'AEIOU': + return 'consoante' + else: + return 'vogal' \ No newline at end of file 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..c1e88c964 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,10 @@ def notas_parciais(nota_1, nota_2): """Escreva aqui em baixo a sua solução""" + media = (nota_1 + nota_2) / 2 + if media < 7: + return 'Reprovado' + elif media == 10: + return 'Aprovado com Distinção' + else: + return 'Aprovado' \ 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..f539b08c5 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,5 @@ def calcular_maior_de_3_numeros(x, y, z): """Escreva aqui em baixo a sua solução""" + numeros = [x, y, z] + return max(numeros) \ 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..8767937d2 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,8 @@ def calcular_maior_de_3_numeros(x, y, z): """Escreva aqui em baixo a sua solução""" + numeros = [x, y, z] + maior = max(numeros) + menor = min(numeros) + print('Maior: {}'.format(maior)) + print('Menor: {}'.format(menor)) \ No newline at end of file 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..5bd20e729 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,6 @@ def decidir_melhor_produto(x, y, z): """Escreva aqui em baixo a sua solução""" + produtos = [x, y, z] + melhor_produto = min(produtos) + print('Melhor produto custa R$ {:.2f}'.format(melhor_produto)) \ No newline at end of file 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..f11708023 100644 --- a/secao_02_estrutura_de_decisao/ex_09_numeros_decrescentes.py +++ b/secao_02_estrutura_de_decisao/ex_09_numeros_decrescentes.py @@ -18,3 +18,6 @@ def ordenar_decrescente(x, y, z): """Escreva aqui em baixo a sua solução""" + numeros = [x, y, z] + numeros.sort(reverse=True) + print(f'{numeros[0]}, {numeros[1]}, {numeros[2]}') \ No newline at end of file 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..1d4600ed0 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 @@ -25,3 +25,7 @@ def cumprimentar(turno: str): """Escreva aqui em baixo a sua solução""" + turnos = {'M': 'Bom dia!', 'V': 'Boa tarde!', 'N': 'Boa noite!'} + if turno.upper() not in turnos: + return 'Valor Inválido!' + return turnos[turno.upper()] 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..25d5258ba 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,18 @@ def calcular_aumento(salario: float): """Escreva aqui em baixo a sua solução""" + if salario <= 280: + aumento = 20 + elif 280 < salario <= 700: + aumento = 15 + elif salario <= 1500: + aumento = 10 + else: + aumento = 5 + aumento_porcentagem = aumento / 100 + aumento_valor = salario * aumento_porcentagem + novo_salario = salario + aumento_valor + print('Salário atual: R$ {:.2f}'.format(salario)) + print('Aumento porcentual: {}%'.format(aumento)) + print('Valor do aumento: R$ {:.2f}'.format(aumento_valor)) + print('Novo salário: R$ {:.2f}'.format(novo_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..2f7c5de9f 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,31 @@ def calcular_salario_liquido(valor_hora: float, horas_trabalhadas: int): """Escreva aqui em baixo a sua solução""" + salario_bruto = valor_hora * horas_trabalhadas + sindicato_desconto = salario_bruto * 0.03 + inss_desconto = salario_bruto * 0.10 + fgts = salario_bruto * 0.11 + percentual_inss = 0 + if salario_bruto <= 900: + ir_desconto = 0 + elif salario_bruto <= 1500: + ir_desconto = salario_bruto * 0.05 + percentual_inss = 5 + elif salario_bruto <= 2500: + ir_desconto = salario_bruto * 0.1 + percentual_inss = 10 + else: + ir_desconto = salario_bruto * 0.2 + percentual_inss = 20 + + total_descontos = ir_desconto + inss_desconto + sindicato_desconto + salario_liquido = salario_bruto - total_descontos + ir_formatado = f'({percentual_inss}%)' + salario_bruto_formatado = f'(R$ {valor_hora:.2f} * {horas_trabalhadas})' + print(f'{"Salário Bruto"}: {salario_bruto_formatado: <20}: R$ {salario_bruto: >8.2f}') + print(f'(-) IR {ir_formatado: <28}: R$ {ir_desconto: >8.2f}') + print(f'(-) INSS {"(10%)": <26}: R$ {inss_desconto: >8.2f}') + print(f'(-) {"Sindicato (3%)": <31}: R$ {sindicato_desconto: >8.2f}') + print(f'FGTS {"(11%)": <30}: R$ {fgts: >8.2f}') + print(f'{"Total de descontos": <35}: R$ {total_descontos: >8.2f}') + print(f'{"Salário Liquido": <35}: R$ {salario_liquido: >8.2f}') \ No newline at end of file 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..ed6f34793 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,17 @@ def calcular_dia_da_semana(numero: int): """Escreva aqui em baixo a sua solução""" + dias = { + 1: 'Domingo', + 2: 'Segunda', + 3: 'Terça', + 4: 'Quarta', + 5: 'Quinta', + 6: 'Sexta', + 7: 'Sábado' + } + if numero in dias: + return dias[numero] + return 'Dia Inválido' + + 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..737f35478 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,17 @@ def calcular_conceito(nota_1: float, nota_2: float): """Escreva aqui em baixo a sua solução""" + media = (nota_1 + nota_2) / 2 + + if media < 6: + if 4 < media < 6: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.\nMédia: {media:.1f}\nConceito: D\nStatus: REPROVADO') + else: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.\nMédia: {media:.1f}\nConceito: E\nStatus: REPROVADO') + else: + if media > 9: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.\nMédia: {media:.1f}\nConceito: A\nStatus: APROVADO') + elif 7.5 < media < 9: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.\nMédia: {media:.1f}\nConceito: B\nStatus: APROVADO') + else: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.\nMédia: {media:.1f}\nConceito: C\nStatus: APROVADO') diff --git a/secao_02_estrutura_de_decisao/ex_15_triangulo.py b/secao_02_estrutura_de_decisao/ex_15_triangulo.py index 7da3edebb..308c6b1f6 100644 --- a/secao_02_estrutura_de_decisao/ex_15_triangulo.py +++ b/secao_02_estrutura_de_decisao/ex_15_triangulo.py @@ -27,3 +27,11 @@ 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: + return 'Triângulo Equilátero' + elif lado_a == lado_b or lado_a == lado_c or lado_b == lado_c: + return 'Triângulo Isósceles' + else: + return 'Triângulo Escaleno' + return 'Não é um triângulo' \ No newline at end of file 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..eee079b1b 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,3 +26,18 @@ def resolver_equacao_do_segundo_grau(a: float, b: float, c: float): """Escreva aqui em baixo a sua solução""" + raizes = [] + delta = b ** 2 - 4 * a * c + if a == 0: + return f'Valor do coeficiente a deve ser diferente de 0' + if delta < 0: + return f'Delta negativo ({delta}), por isso não existem raízes reais' + if delta == 0: + raiz = -b / (2 * a) + return f'Delta é {delta}, raíz única no valor de {raiz}' + if delta > 0: + raiz = (-b + delta ** (1 / 2)) / (2 * a) + for i in range(2): + raizes.append(raiz) + raiz = (-b - delta ** (1 / 2)) / (2 * a) + return f'Delta é {delta}, raízes são {raizes[0]} e {raizes[1]}' 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..ca47b43a5 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,7 @@ def eh_ano_bissexto(ano: int): """Escreva aqui em baixo a sua solução""" + if ano % 4 == 0 and ano % 100 != 0 or ano % 400 == 0: + return True + else: + return 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..8858be050 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,27 @@ def validar_data(data: str): """Escreva aqui em baixo a sua solução""" + if data == '': + return 'Data inválida' + try: + dia, mes, ano = data.split('/') + dia = int(dia) + mes = int(mes) + ano = int(ano) + if dia < 1 or dia > 31: + return 'Data inválida' + if mes < 1 or mes > 12: + return 'Data inválida' + if mes == 2: + if ano % 4 == 0 and ano % 100 != 0 or ano % 400 == 0: + if dia > 29: + return 'Data inválida' + else: + if dia > 28: + return 'Data inválida' + if mes in [4, 6, 9, 11]: + if dia > 30: + return 'Data inválida' + return 'Data válida' + except: + return '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..17ee8e0aa 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,34 @@ def decompor_numero(numero: int): """Escreva aqui em baixo a sua solução""" + if numero < 0: + return 'O número precisa ser positivo' + if numero >= 1000: + return 'O número precisa ser menor que 1000' + + valores = {100: 'centena', 10: 'dezena', 1: 'unidade'} + numeros_print = [] + pedacos = 0 + resto = numero + + for k, v in valores.items(): + valor = divmod(resto, k) + quantidade, resto = valor + + + + if quantidade > 1: + aux = f'{quantidade} {v}s' + numeros_print.append(aux) + elif quantidade == 1: + aux = f'{quantidade} {v}' + numeros_print.append(aux) + + for i in range(len(numeros_print)): + if i == len(numeros_print) - 1 and len(numeros_print) > 1: + numeros_print[i] = ' e ' + numeros_print[i] + elif len(numeros_print) > 1 and i != len(numeros_print) - 2: + numeros_print[i] = numeros_print[i] + ', ' + + return f'{numero} = ' + ''.join(numeros_print) + 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..c90a7de32 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,11 @@ 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 media < 6: + return 'Reprovado' + elif media == 10: + return 'Aprovado com Distinção' + else: + return 'Aprovado' \ 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..87d73cc06 100644 --- a/secao_02_estrutura_de_decisao/ex_21_troco.py +++ b/secao_02_estrutura_de_decisao/ex_21_troco.py @@ -27,3 +27,30 @@ def calcular_troco(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + + tipos_de_notas = [100, 50, 10, 5, 1] + aux = '' + pedacos = 0 + quantidade_de_notas = [] + + resto = valor + while resto > 0: + valor = divmod(resto, tipos_de_notas[pedacos]) + notas, resto = valor + if notas > 1: + aux = f'{notas} notas de R$ {tipos_de_notas[pedacos]}' + quantidade_de_notas.append(aux) + elif notas == 1: + aux = f'{notas} nota de R$ {tipos_de_notas[pedacos]}' + quantidade_de_notas.append(aux) + pedacos += 1 + for i in range(len(quantidade_de_notas)): + if i == len(quantidade_de_notas) - 1 and len(quantidade_de_notas) > 1: + quantidade_de_notas[i] = ' e ' + quantidade_de_notas[i] + elif len(quantidade_de_notas) > 1 and i != len(quantidade_de_notas) - 2: + quantidade_de_notas[i] = quantidade_de_notas[i] + ', ' + + return ''.join(quantidade_de_notas) + + + 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..a504ec84b 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,7 @@ def decidir_se_eh_par_ou_impar(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + if valor % 2 == 0: + return 'Par' + else: + return '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..be4ddf416 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,7 @@ def decidir_se_eh_inteiro_ou_decimal(valor: str) -> str: """Escreva aqui em baixo a sua solução""" + if float(valor) % 1 == 0: + return 'Inteiro' + else: + return 'Decimal' \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_24_operacao.py b/secao_02_estrutura_de_decisao/ex_24_operacao.py index 73fd5778f..e1e67c77e 100644 --- a/secao_02_estrutura_de_decisao/ex_24_operacao.py +++ b/secao_02_estrutura_de_decisao/ex_24_operacao.py @@ -31,3 +31,37 @@ def fazer_operacao_e_classificar(n_1: float, n_2: float, operacao: str): """Escreva aqui em baixo a sua solução""" + resultado = eval(f'{n_1}{operacao}{n_2}') + + par_ou_impar = { + 'par': lambda x: x % 2 == 0, + 'impar': lambda x: x % 2 != 0 + } + positivo_ou_negativo = { + 'positivo': lambda x: x > 0, + 'negativo': lambda x: x < 0, + 'neutro': lambda x: x == 0 + } + inteiro_ou_decimal = { + 'inteiro': lambda x: x % 1 == 0, + 'decimal': lambda x: x % 1 != 0 + } + # + for i in par_ou_impar: + if par_ou_impar[i](resultado): + par_ou_impar = i + break + for i in positivo_ou_negativo: + if positivo_ou_negativo[i](resultado): + positivo_ou_negativo = i + break + for i in inteiro_ou_decimal: + if inteiro_ou_decimal[i](resultado): + inteiro_ou_decimal = i + break + if inteiro_ou_decimal == 'decimal': + print(f'Resultado: {resultado:.2f}') + print(f'Número é {positivo_ou_negativo} e {inteiro_ou_decimal}.') + return + print(f'Resultado: {resultado:.2f}') + print(f'Número é {par_ou_impar}, {positivo_ou_negativo} e {inteiro_ou_decimal}.') \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_25_sherlock.py b/secao_02_estrutura_de_decisao/ex_25_sherlock.py index b9e2e1017..ada72095c 100644 --- a/secao_02_estrutura_de_decisao/ex_25_sherlock.py +++ b/secao_02_estrutura_de_decisao/ex_25_sherlock.py @@ -33,3 +33,14 @@ def investigar(telefonou: str, estava_no_local: str, mora_perto: str, devia: str, trabalhou: str, ): """Escreva aqui em baixo a sua solução""" + perguntas = [telefonou, estava_no_local, mora_perto, devia, trabalhou] + respostas = perguntas.count('Sim') + questions = { + 'Inocente': [0, 1], + 'Suspeito': [2], + 'Cúmplice': [3, 4], + 'Assassino': [5], + } + for k, v in questions.items(): + if respostas in v: + return k \ 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..4393868bf 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': + valor_total = litros_de_combustivel * 1.90 + if litros_de_combustivel <= 20: + valor_a_pagar = valor_total - ((litros_de_combustivel * 1.90) * 0.03) + return f'{litros_de_combustivel} litro(s) de álcool custa(m): R$ {valor_total:.2f}. Com 3% de desconto, fica R$ {valor_a_pagar:.2f}' + else: + valor_a_pagar = valor_total - ((valor_total) * 0.05) + return f'{litros_de_combustivel} litro(s) de álcool custa(m): R$ {valor_total:.2f}. Com 5% de desconto, fica R$ {valor_a_pagar:.2f}' + else: + valor_total = litros_de_combustivel * 2.50 + if litros_de_combustivel <= 20: + valor_a_pagar = valor_total - ((litros_de_combustivel * 2.50) * 0.04) + return f'{litros_de_combustivel} litro(s) de gasolina custa(m): R$ {valor_total:.2f}. Com 4% de desconto, fica R$ {valor_a_pagar:.2f}' + else: + valor_a_pagar = valor_total - ((valor_total) * 0.06) + return f'{litros_de_combustivel} litro(s) de gasolina custa(m): R$ {valor_total:.2f}. Com 6% de desconto, fica R$ {valor_a_pagar:.2f}' \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_27_hortifruti.py b/secao_02_estrutura_de_decisao/ex_27_hortifruti.py index 2e468a508..adfc203c3 100644 --- a/secao_02_estrutura_de_decisao/ex_27_hortifruti.py +++ b/secao_02_estrutura_de_decisao/ex_27_hortifruti.py @@ -59,3 +59,32 @@ def calcular_preco_da_compra(kilos_de_morango: int, kilos_de_maca: int): """Escreva aqui em baixo a sua solução""" + desconto = 0 + get_preco = { + 'até_5_kg': lambda x: x <= 5, + } + for i in get_preco: + if get_preco[i](kilos_de_morango): + preco_morango = 2.50 + else: + preco_morango = 2.20 + if get_preco[i](kilos_de_maca): preco_maca = 1.80 + else: preco_maca = 1.50 + valor_total = (preco_morango * kilos_de_morango) + (preco_maca * kilos_de_maca) + kg_total = kilos_de_morango + kilos_de_maca + if kg_total > 8 or valor_total > 25: + desconto = valor_total * 0.10 + valor_total = valor_total - desconto + if kilos_de_morango == 0: + print(f'(+) Maça - valor: R$ {(preco_maca * kilos_de_maca): >5.2f} - quantidade: {kilos_de_maca} kg - preço: R$ {preco_maca:.2f}/kg') + print(f'(-) Desconto - valor: R$ {desconto: >5.2f}') + print(f' Valor Total: R$ {valor_total: >5.2f}') + elif kilos_de_maca == 0: + print(f'(+) Morango - valor: R$ {(preco_morango * kilos_de_morango): >5.2f} - quantidade: {kilos_de_morango} kg - preço: R$ {preco_morango:.2f}/kg') + print(f'(-) Desconto - valor: R$ {desconto: >5.2f}') + print(f' Valor Total: R$ {valor_total: >5.2f}') + else: + print(f'(+) Morango - valor: R$ {(preco_morango * kilos_de_morango): >5.2f} - quantidade: {kilos_de_morango} kg - preço: R$ {preco_morango:.2f}/kg') + print(f'(+) Maça - valor: R$ {(preco_maca * kilos_de_maca): >5.2f} - quantidade: {kilos_de_maca} kg - preço: R$ {preco_maca:.2f}/kg') + print(f'(-) Desconto - valor: R$ {desconto: >5.2f}') + print(f' Valor Total: R$ {valor_total: >5.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..0178cc2cb 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,22 @@ 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""" + if kilos_de_carne <= 5: + preços_carne = { + 'Filé Duplo': 4.90, + 'Alcatra': 5.90, + 'Picanha': 6.90 + } + else: + preços_carne = { + 'Filé Duplo': 5.80, + 'Alcatra': 6.80, + 'Picanha': 7.80 + } + + preço_total = kilos_de_carne * preços_carne[tipo_de_carne] + if forma_de_pagamento == 'cartão tabajara': + preço_total_com_desconto = preço_total - (preço_total * 0.05) + return f'{kilos_de_carne} kg de {tipo_de_carne} a R$ {preços_carne[tipo_de_carne]:.2f}/kg saem a R$ {preço_total:.2f}. Com desconto de 5% pelo pagamento feito com cartão tabajara, fica R$ {preço_total_com_desconto:.2f}' + else: + return f'{kilos_de_carne} kg de {tipo_de_carne} a R$ {preços_carne[tipo_de_carne]:.2f}/kg saem a R$ {preço_total:.2f}. Não há desconto, pagamento feito com {forma_de_pagamento}' 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..16b23478c 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,10 @@ def obter_numero_valido(): """Escreva aqui em baixo a sua solução""" + numero = input('') + while True: + if numero.isdigit() and 0<= int(numero) <= 10: + return int(numero) + else: + print(f'Número inválido: {numero}') + numero = input('') 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..c94556310 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,14 @@ def validar_senha(): """Escreva aqui em baixo a sua solução""" + + login = input('') + senha = input('') + + while True: + if senha == login: + login = input('') + senha = input('') + print(f'Senha deve ser diferente do login') + else: + return f'Cadastro realizado com suceso, seu login é {login}' \ No newline at end of file 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..01481eabd 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,22 @@ def cadastrar_usuario(nome: str, idade: int, salario: float, sexo: str, estado_civil: str): """Escreva aqui em baixo a sua solução""" + prints_erros = [] + if len(nome) < 3: + prints_erros.append(f'Erro: o nome precisa ter 3 letras ou mais, não pode ser {nome}') + if idade < 0 or idade > 150: + prints_erros.append(f'Erro: a idade precisa estar entre 0 e 150, não pode ser {idade}') + if salario <= 0: + prints_erros.append(f'Erro: o salário precisa ser positivo, não pode ser {salario}') + if sexo not in 'mf': + prints_erros.append(f'Erro: o sexo precisa ser "m" ou "f", não pode ser "{sexo}"') + if estado_civil not in 'scvd': + prints_erros.append(f'Erro: o estado civil precisa ser "s", "c", "v" ou "d", não pode ser "{estado_civil}"') + if prints_erros: + for erro in prints_erros: + print(erro) + else: + print(f'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..a9f587b70 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,13 @@ def calcular_ano_ultrapassagem_populacional() -> str: """Escreva aqui em baixo a sua solução""" + pais_a = 80000 + pais_b = 200000 + ano = 0 + + while pais_b > pais_a: + pais_a += (pais_a * 0.03) + pais_b += (pais_b * 0.015) + ano += 1 + + return f'População de A, depois de {ano} ano(s) será de {int(pais_a)} pessoas, superando a de B, que será de {int(pais_b)} pessoas' 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..2f955ee13 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,15 @@ 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""" + pais_a = populacao_menor + pais_b = populacao_maior + ano = 0 + if taxa_crescimento_populacao_menor < taxa_crescimento_populacao_maior: + return 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}%)' + + while pais_b > pais_a: + pais_a = pais_a + (pais_a * taxa_crescimento_populacao_menor) + pais_b = pais_b + (pais_b * taxa_crescimento_populacao_maior) + ano += 1 + + return f'População de A, depois de {ano} ano(s) será de {int(pais_a)} pessoas, superando a de B, que será de {int(pais_b)} pessoas' \ No newline at end of file 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..ea6f1064a 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""" + lista = [str(x) for x in range(1, 21)] + + if formato == 'um_abaixo_do_outro': + for numero in lista: + print(numero) + else: + print(' '.join(lista)) \ No newline at end of file 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..a96f7a683 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] + return 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..64bdbbb09 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,9 @@ def calcular_soma_e_media(n1: int, n2: int, n3: int, n4: int, n5: int) -> str: """Escreva aqui em baixo a sua solução""" + + numeros = [n1, n2, n3, n4, n5] + soma = sum(numeros) + media = soma / len(numeros) + return f'Soma: {soma}, 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..976264bcb 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 @@ -11,4 +11,7 @@ def calcular_numeros_impares_de_1_a_50() -> str: - """Escreva aqui em baixo a sua solução""" + + lista = [str(x) for x in range(1, 51) if x % 2 != 0] + return ', '.join(lista) + 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..987d8597e 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 @@ -12,7 +12,18 @@ '' """ - +from itertools import count def calcular_numeros_no_intervalo(inicio: int, fim: int) -> str: """Escreva aqui em baixo a sua solução""" + lista = [] + if inicio > fim: + return '' + else: + for numero in count(inicio): + if numero >= fim: + break + lista.append(str(numero)) + return ', '.join(lista) + + 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..9930f0470 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 @@ -16,5 +16,17 @@ """ +from itertools import count def calcular_numeros_no_intervalo_e_somar(inicio: int, fim: int) -> str: """Escreva aqui em baixo a sua solução""" + lista = [] + soma = 0 + if inicio > fim: + return 'Sequência: vazia. Soma: 0' + else: + for i in count(inicio): + if i >= fim: + break + lista.append(str(i)) + soma += i + return f'Sequência: {", ".join(lista)}. Soma: {soma}' diff --git a/secao_03_estrutura_de_repeticao/ex_12_taboada.py b/secao_03_estrutura_de_repeticao/ex_12_taboada.py new file mode 100644 index 000000000..7747c82ef --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_12_taboada.py @@ -0,0 +1,131 @@ +""" +Exercício 12 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer número inteiro entre 1 a 10. + + >>> gerar_taboada(0) + Somente pode ser gerada taboada de 1 a 10 + >>> gerar_taboada(11) + Somente pode ser gerada taboada de 1 a 10 + >>> gerar_taboada(1) + 1 X 1 = 1 + 1 X 2 = 2 + 1 X 3 = 3 + 1 X 4 = 4 + 1 X 5 = 5 + 1 X 6 = 6 + 1 X 7 = 7 + 1 X 8 = 8 + 1 X 9 = 9 + 1 X 10 = 10 + >>> gerar_taboada(2) + 2 X 1 = 2 + 2 X 2 = 4 + 2 X 3 = 6 + 2 X 4 = 8 + 2 X 5 = 10 + 2 X 6 = 12 + 2 X 7 = 14 + 2 X 8 = 16 + 2 X 9 = 18 + 2 X 10 = 20 + >>> gerar_taboada(3) + 3 X 1 = 3 + 3 X 2 = 6 + 3 X 3 = 9 + 3 X 4 = 12 + 3 X 5 = 15 + 3 X 6 = 18 + 3 X 7 = 21 + 3 X 8 = 24 + 3 X 9 = 27 + 3 X 10 = 30 + >>> gerar_taboada(4) + 4 X 1 = 4 + 4 X 2 = 8 + 4 X 3 = 12 + 4 X 4 = 16 + 4 X 5 = 20 + 4 X 6 = 24 + 4 X 7 = 28 + 4 X 8 = 32 + 4 X 9 = 36 + 4 X 10 = 40 + >>> gerar_taboada(5) + 5 X 1 = 5 + 5 X 2 = 10 + 5 X 3 = 15 + 5 X 4 = 20 + 5 X 5 = 25 + 5 X 6 = 30 + 5 X 7 = 35 + 5 X 8 = 40 + 5 X 9 = 45 + 5 X 10 = 50 + >>> gerar_taboada(6) + 6 X 1 = 6 + 6 X 2 = 12 + 6 X 3 = 18 + 6 X 4 = 24 + 6 X 5 = 30 + 6 X 6 = 36 + 6 X 7 = 42 + 6 X 8 = 48 + 6 X 9 = 54 + 6 X 10 = 60 + >>> gerar_taboada(7) + 7 X 1 = 7 + 7 X 2 = 14 + 7 X 3 = 21 + 7 X 4 = 28 + 7 X 5 = 35 + 7 X 6 = 42 + 7 X 7 = 49 + 7 X 8 = 56 + 7 X 9 = 63 + 7 X 10 = 70 + >>> gerar_taboada(8) + 8 X 1 = 8 + 8 X 2 = 16 + 8 X 3 = 24 + 8 X 4 = 32 + 8 X 5 = 40 + 8 X 6 = 48 + 8 X 7 = 56 + 8 X 8 = 64 + 8 X 9 = 72 + 8 X 10 = 80 + >>> gerar_taboada(9) + 9 X 1 = 9 + 9 X 2 = 18 + 9 X 3 = 27 + 9 X 4 = 36 + 9 X 5 = 45 + 9 X 6 = 54 + 9 X 7 = 63 + 9 X 8 = 72 + 9 X 9 = 81 + 9 X 10 = 90 + >>> gerar_taboada(10) + 10 X 1 = 10 + 10 X 2 = 20 + 10 X 3 = 30 + 10 X 4 = 40 + 10 X 5 = 50 + 10 X 6 = 60 + 10 X 7 = 70 + 10 X 8 = 80 + 10 X 9 = 90 + 10 X 10 = 100 + +""" + + +def gerar_taboada(n: int) -> str: + """Escreva aqui em baixo a sua solução""" + if n < 1 or n > 10: + print(f'Somente pode ser gerada taboada de 1 a 10') + return + for i in range(1, 11): + print(f'{n} X {i} = {n * i}') \ 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..c2d220a83 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 or n > 10: + print(f'Somente pode ser gerada tabuada de 1 a 10') + return + for i in range(1, 11): + print(f'{n} X {i} = {n * i}') \ 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..950d4cf08 100644 --- a/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py +++ b/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py @@ -17,4 +17,8 @@ def calcular_potencia(base: int, expoente: int) -> int: - """Escreva aqui em baixo a sua solução""" + + potencia = base + for i in range(expoente - 1): + potencia *= base + return 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..5d41f8320 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,14 @@ 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] + qtde_pares = 0 + qtde_impares = 0 + for i in numeros: + if i % 2 == 0: + qtde_pares += 1 + else: + qtde_impares += 1 + return f'Existem {qtde_pares} números pares e {qtde_impares} números impares' + 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..53583fe6c 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,20 @@ def calcular_serie_de_fibonacci(n: int) -> str: """Escreva aqui em baixo a sua solução""" + + if n == 1: + return '1' + elif n == 2: + return '1, 1' + else: + n_1 = 1 + n_2 = 1 + n_3 = 0 + resultado = '1, 1' + for i in range(3, n + 1): + n_3 = n_1 + n_2 + n_1 = n_2 + n_2 = n_3 + resultado = resultado + ', ' + str(n_3) + return resultado + 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..f81aad1ea 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,12 @@ def calcular_serie_de_fibonacci_ate_valor_ser_maior_que_500() -> str: """Escreva aqui em baixo a sua solução""" + n_1 = 0 + n_2 = 1 + num = [0] + while n_1 < 500: + aux = n_1 + n_1 = n_2 + aux + n_2 = aux + num.append(n_1) + return ', '.join(str(i) for i in num) diff --git a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py index 0188fcfa3..e51ce02dd 100644 --- a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py +++ b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py @@ -23,3 +23,9 @@ def calcular_fatorial(n: int) -> int: """Escreva aqui em baixo a sua solução""" + + if n == 0: + return 1 + else: + return n * calcular_fatorial(n - 1) + 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..44980524d 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 @@ -16,5 +16,16 @@ """ -def calcular_estatisticas(*numeros) -> str: + +def calcular_estatisticas(*numeros) -> int: """Escreva aqui em baixo a sua solução""" + numero = list(numeros) + if numero == []: + return f'Maior valor: não existe. Menor valor: não existe. Soma: 0' + else: + maior = max(numero) + menor = min(numero) + soma = sum(numero) + return f'Maior valor: {maior}. Menor valor: {menor}. Soma: {soma}' + + 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..c75115add 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,14 @@ def calcular_estatisticas(*numeros) -> str: """Escreva aqui em baixo a sua solução""" + numero = numeros + + if len(numero) == 0: + return f'Maior valor: não existe. Menor valor: não existe. Soma: 0' + elif max(numero) > 1000 or min(numero) < 0: + return 'Somente números de 0 a 1000 são permitidos' + else: + maior = max(numero) + menor = min(numero) + soma = sum(numero) + return f'Maior valor: {maior}. Menor valor: {menor}. Soma: {soma}' 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..2f554258a 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,10 @@ def calcular_fatorial(n: int) -> int: """Escreva aqui em baixo a sua solução""" + na = 1 + if n <= 0 or n > 16 or n != int(n): + return 'Apenas valores positivos, inteiros e menores que 16 são válidos. Não é possível calcular para {}'.format(n) + else: + for i in range(n, 0, -1): + na = na * (i) + return na \ 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..1068b50f8 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,12 @@ def eh_primo(n: int) -> bool: """Escreva aqui em baixo a sua solução""" + if n == 1 or n == 0: + return False + elif n == 2: + return True + else: + for i in range(2, n): + if n % i == 0: + return False + return True \ No newline at end of file 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..d17949caf 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""" + cont = 0 + if n == 1 or n == 0: + return False + elif n == 2: + return True + else: + for i in range(2, n): + if n % i == 0: + print(f"É divisível por {i}") + cont += 1 + if cont > 0: + return False + return True 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..bcdaf9a5e 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,36 @@ def calcular_primos_e_divisoes(n: int) -> Tuple[str, int]: """Escreva aqui em baixo a sua solução""" + tupla = (is_primo(n), conta_for(n)) + return tupla + +def is_primo(n: int): + lista_primos = [] + if n == 1 or n == 0: + return '' + elif n == 2: + return '2' + else: + lista_primos.append(2) + for i in range(3, n + 1): + if n % i == 0 and n != i: + continue + else: + if i == 4: + continue + else: + lista_primos.append(i) + return ', '.join(str(x) for x in lista_primos) + +def conta_for(n: int): + contador = 0 + if n == 1 or n == 0: + contador = 0 + return contador + elif n == 2: + contador = 0 + return contador + for i in range(1, n): + if n % i == 0: + contador += 1 + return contador \ No newline at end of file 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..5494850d2 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,10 @@ def calcular_media(*notas) -> float: """Escreva aqui em baixo a sua solução""" + if len(notas) == 0: + return 'É necessária ao menos uma nota para calcular a média' + notas = notas + media = sum(notas) / len(notas) + if media.is_integer(): + return int(media) + return media \ 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..7b662a5d0 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 @@ -24,3 +24,12 @@ def classifcar_turma(*idades) -> str: """Escreva aqui em baixo a sua solução""" + if len(idades) == 0: + return 'É necessária ao menos uma idade para classificar a turma' + media = sum(idades) / len(idades) + if media <= 25: + return f'A turma é jovem, pois a média é de {media:.1f} anos' + elif media < 60: + return f'A turma é adulta, pois a média é de {media:.1f} anos' + else: + return f'A turma é idosa, pois a média é de {media:.1f} anos' \ No newline at end of file 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..89aea5903 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,20 @@ def calcular_votos(*votos): """Escreva aqui em baixo a sua solução""" + lista = list(votos) + conta_votos = { + 'corrupto': 0, + 'mentiroso': 0, + 'rouba, mas faz': 0, + 'votanentes': 0 + } + conta_votos['votanentes'] = len(lista) + for i in lista: + if i in conta_votos: + conta_votos[i] += 1 + print(f'Votantes: {conta_votos["votanentes"]}') + for k, v in conta_votos.items(): + if k != 'votanentes': + print(f'Votos no candidato {k}: {v}') + + 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..fe9d97838 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""" + numero_de_turmas = int(input('')) + media_de_alunos_por_turma = 0 + alunos = 0 + print('Número de turmas:', numero_de_turmas) + for i in range(numero_de_turmas): + numero_de_alunos = int(*input('')) + if not (numero_de_alunos > 40 or numero_de_alunos < 1): + alunos += numero_de_alunos + else: + print('Uma turma deve ter de 1 a 40 alunos, não é possível ter {} alunos'.format(numero_de_alunos)) + media_de_alunos_por_turma = alunos / numero_de_turmas + + print(f'Média de alunos por turma: {media_de_alunos_por_turma:.0f}') + 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..178e0f820 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,12 @@ def calcular_estatisticas_colecao_de_cd(): """Escreva aqui em baixo a sua solução""" + n_cds = int(input('Número de cds: ')) + valor_total = 0 + for i in range(n_cds): + valor_total += float(input('Valor total da coleção: ')) + medio = valor_total / n_cds + + print(f'Número de cds: {n_cds}') + print(f'Valor total da coleção: R$ {valor_total:.2f}') + print(f'Custo médio dos cds: R$ {medio:.2f}') \ No newline at end of file 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..5cadd4826 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 @@ -63,7 +63,13 @@ """ - +from itertools import count def gerar_tabela_de_precos(): """Escreva aqui em baixo a sua solução""" + print("Lojas Quase Dois - Tabela de preços") + + for i in count(1): + if i > 50: + break + print(f'{i: <3}- R$ {i * 1.99: >5.2f}') \ No newline at end of file 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..57a1304d0 100644 --- a/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py +++ b/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py @@ -115,7 +115,13 @@ """ - +from itertools import count 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}") + print("Panificadora Pão de Ontem - Tabela de preços") + for i in count(1): + if i > 50: + break + print(f'{i: <3}- R$ {i * preco_por_pao:6.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..7f5bcb7e4 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,5 @@ def rodar_programa_de_caixa(): """Escreva aqui em baixo a sua solução""" + + 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..7a41c1151 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,10 @@ def calcular_fatorial(n: int): """Escreva aqui em baixo a sua solução""" + na = 1 + if n == 1: + print(f'Fatorial de {n}:\n{n}! = 1 = 1') + else: + for i in range(n, 0, -1): + na = na * (i) + print(i) 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..dedb5da30 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,11 @@ def calcular_estatisticas(*temperaturas) -> str: """Escreva aqui em baixo a sua solução""" + temp_lista = list(temperaturas) + if len(temp_lista) == 0: + return 'Maior temperatura: não existe. Menor temperatura: não existe. Média: não existe' + else: + maior = max(temp_lista) + menor = min(temp_lista) + media = sum(temp_lista) / len(temp_lista) + return f'Maior temperatura: {maior}. Menor temperatura: {menor}. Média: {media:.1f}' 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..2bbcc8b07 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,9 @@ 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 i in range(de, ate + 1): + print(f'{n} X {i} = {n * i}') + 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..7f89f6b74 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,5 @@ def calcular_salarios_anuais(salario: float): """Escreva aqui em baixo a sua solução""" + ano = 2018 + aumento = 0.00 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..9dc20b777 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""" + alunos_lista = list(alunos) + maior = alunos_lista[0][1] + menor = alunos_lista[0][1] + aluno_mais_alto = alunos_lista[0][0] + aluno_mais_baixo = alunos_lista[0][0] + for aluno in alunos_lista: + if aluno[1] > maior: + maior = aluno[1] + aluno_mais_alto = aluno[0] + if aluno[1] < menor: + menor = aluno[1] + aluno_mais_baixo = aluno[0] + + return f'O maior aluno é o {aluno_mais_alto} com {maior} cm. O menor aluno é o {aluno_mais_baixo} com {menor} cm' \ No newline at end of file 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..c9f5e2d18 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,6 @@ def apurar_votos(*votos): """Escreva aqui em baixo a sua solução""" + candidatos = {1: 'Bostonaro', 2: 'Luladrão', 3: 'Dilmanta', 4: 'FHC Isentão'} + votos_candidatos = Counter(votos) + print(votos_candidatos) 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..11b593d19 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 @@ -49,3 +49,6 @@ def corrigir(*provas): """Escreva aqui em baixo a sua solução""" + alunos = [] + for prova in provas: + alunos.append(prova[0]) \ 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..a283af655 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 @@ -23,10 +23,10 @@ --------------------------------- Melhor salto: 6.5 m Pior salto: 5.3 m - Média dos demais saltos: 5.8 m + Média dos demais saltos: 5.9 m --------------------------------- Resultado final: - Rodrigo Curvêllo: 5.8 m + Rodrigo Curvêllo: 5.9 m >>> calcular_estatiscas_do_salto('João do Pulo', 6.8, 6.5, 6.1, 6.2, 5.4) Atleta: João do Pulo --------------------------------- @@ -44,7 +44,22 @@ João do Pulo: 6.2 m """ - +from statistics import mean def calcular_estatiscas_do_salto(nome, *saltos): """Escreva aqui em baixo a sua solução""" + + saltos = list(saltos) + media = sum(saltos) / len(saltos) + dict_saltos = {'Primeiro Salto': saltos[0], 'Segundo Salto': saltos[1], 'Terceiro Salto': saltos[2], 'Quarto Salto': saltos[3], 'Quinto Salto': saltos[4]} + print(f'Atleta: {nome}') + print('---------------------------------') + for k, v in dict_saltos.items(): + print(f'{k}: {v} m') + print('---------------------------------') + print(f'Melhor salto: {max(saltos)} m') + print(f'Pior salto: {min(saltos)} m') + print(f'Média dos demais saltos: {media} m') + print('---------------------------------') + print(f'Resultado final:') + print(f'{nome}: {media} 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..9f43d97ad 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,6 @@ def inverter_inteiro(numero): """Escreva aqui em baixo a sua solução""" + numero = str(numero) + numero = numero[::-1] + return int(numero) \ No newline at end of file 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..ca325bdb8 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,15 @@ def imprimir_serie(n): """Escreva aqui em baixo a sua solução""" + + S = 0 + dividendo = 1 + divisor = 1 + str_print = [] + for i in range(1, n+1): + S += dividendo/divisor + str_print.append(f'{dividendo}/{divisor}') + dividendo += 1 + divisor += 2 + print(f'S = {" + ".join(str_print)}') + print(f'soma = {S}') \ No newline at end of file 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..13710fbba 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,7 @@ def soma_serie(n): """Escreva aqui em baixo a sua solução""" + H = 0 + for i in range(1, n+1): + H += 1/i + print(f'H = {H}') \ No newline at end of file diff --git a/secao_04_exercicios_lista/ex_01_vetor_5_numeros.py b/secao_04_exercicios_lista/ex_01_vetor_5_numeros.py index 14a81a7b1..c733f1c6f 100644 --- a/secao_04_exercicios_lista/ex_01_vetor_5_numeros.py +++ b/secao_04_exercicios_lista/ex_01_vetor_5_numeros.py @@ -11,4 +11,5 @@ def ler_5_valores(): """Escreva aqui em baixo a sua solução""" - + inteiros = [1,2,3,4,5] + return ler_5_valores() \ No newline at end of file diff --git a/secao_04_exercicios_lista/ex_05_vetore_par_e_impar.py b/secao_04_exercicios_lista/ex_05_vetore_par_e_impar.py index 9eec1cf20..3151e9b86 100644 --- a/secao_04_exercicios_lista/ex_05_vetore_par_e_impar.py +++ b/secao_04_exercicios_lista/ex_05_vetore_par_e_impar.py @@ -19,3 +19,12 @@ def separar_em_vertores_par_e_impar(inteiros: list) -> str: """Escreva aqui em baixo a sua solução""" + lista = inteiros.copy() + lista_par = [] + lista_impar = [] + for i in lista: + if i % 2 == 0: + lista_par.append(i) + else: + lista_impar.append(i) + return f'Vetor original: {lista}. Vetor com elementos pares: {lista_par}. Vetor com elementos impares: {lista_impar}.' \ No newline at end of file diff --git a/secao_04_exercicios_lista/ex_09_soma_de_quadrados.py b/secao_04_exercicios_lista/ex_09_soma_de_quadrados.py index ebe8d34ee..6193f1e38 100644 --- a/secao_04_exercicios_lista/ex_09_soma_de_quadrados.py +++ b/secao_04_exercicios_lista/ex_09_soma_de_quadrados.py @@ -19,3 +19,8 @@ def calcular_soma_de_quadrados(inteiros: list) -> int: """Escreva aqui em baixo a sua solução""" + lista = inteiros.copy() + soma = 0 + for i in lista: + soma += i**2 + return soma \ No newline at end of file diff --git a/secao_04_exercicios_lista/ex_10_intercalacao_de_vetores.py b/secao_04_exercicios_lista/ex_10_intercalacao_de_vetores.py index 403990b87..038fa7453 100644 --- a/secao_04_exercicios_lista/ex_10_intercalacao_de_vetores.py +++ b/secao_04_exercicios_lista/ex_10_intercalacao_de_vetores.py @@ -19,4 +19,9 @@ def intercalar(lista_1: list, lista_2: list) -> list: """Escreva aqui em baixo a sua solução""" - + lista = zip(lista_1, lista_2) + lista_intercalada = [] + for i in lista: + lista_intercalada.append(i[0]) + lista_intercalada.append(i[1]) + print(lista_intercalada) diff --git a/secao_04_exercicios_lista/ex_11_intercalacao_de_3_vetores.py b/secao_04_exercicios_lista/ex_11_intercalacao_de_3_vetores.py index 6d4f73a61..2fcd7d5eb 100644 --- a/secao_04_exercicios_lista/ex_11_intercalacao_de_3_vetores.py +++ b/secao_04_exercicios_lista/ex_11_intercalacao_de_3_vetores.py @@ -19,3 +19,10 @@ def intercalar(lista_1: list, lista_2: list, lista_3: list) -> list: """Escreva aqui em baixo a sua solução""" + lista = zip(lista_1, lista_2, lista_3) + lista_intercalada = [] + for i in lista: + lista_intercalada.append(i[0]) + lista_intercalada.append(i[1]) + lista_intercalada.append(i[2]) + print(lista_intercalada) \ No newline at end of file diff --git a/secao_05_exercicios_funcoes/ex_01_piramide.py b/secao_05_exercicios_funcoes/ex_01_piramide.py index df693b31e..c9fae7622 100644 --- a/secao_05_exercicios_funcoes/ex_01_piramide.py +++ b/secao_05_exercicios_funcoes/ex_01_piramide.py @@ -13,3 +13,12 @@ para um n informado pelo usuário. Use uma função que receba um valor n inteiro e imprima até a n-ésima linha. """ +def imprimir_linhas(n): + """Escreva aqui em baixo a sua solução""" + for i in range(1, n+1): + for j in range(1, i+1): + print(i, end=' ') + + print() + +imprimir_linhas(7) \ No newline at end of file diff --git a/secao_05_exercicios_funcoes/ex_14_quadro_magico.py b/secao_05_exercicios_funcoes/ex_14_quadro_magico.py new file mode 100644 index 000000000..d256b3d44 --- /dev/null +++ b/secao_05_exercicios_funcoes/ex_14_quadro_magico.py @@ -0,0 +1,40 @@ +""" + Um quadrado mágico é aquele dividido em linhas e colunas, com um número em cada posição e + no qual a soma das linhas, colunas e diagonais é a mesma. + Por exemplo, veja um quadrado mágico de lado 3, com números de 1 a 9: + + 8 3 4 + 1 5 9 + 6 7 2 + + Elabore uma função que identifica e mostra na tela todos os quadrados mágicos com as características acima. + Dica: produza todas as combinações possíveis e verifique a soma quando completar cada quadrado. + Usar um vetor de 1 a 9 parece ser mais simples que usar uma matriz 3x3. + + >>> from secao_05_exercicios_funcoes import ex_14_quadro_magico + >>> ex_14_quadro_magico.quadro_magico(sua_funcao) + 'sua funcao está ok' + + + +""" + + +def quadro_magico(sua_funcao): + if callable(sua_funcao): + linhas_colunas = sua_funcao() + if sum((linhas_colunas[0][0], linhas_colunas[1][0], linhas_colunas[2][0])) \ + == sum((linhas_colunas[0][1], linhas_colunas[1][1], linhas_colunas[2][1])) \ + == sum((linhas_colunas[0][2], linhas_colunas[1][2], linhas_colunas[2][2])): + return 'sua funcao está ok' + else: + return 'sua funcao está errada' + else: + return 'isso não é uma função' + + +from typing import List + +def sua_funcao() -> [List[int], List[int], List[int]]: + """Escreva aqui em baixo a sua solução""" +