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"""
+