From 458ef1946c52b875d982e136d0b8a9d55d6972a4 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Mon, 23 May 2022 14:53:41 -0300 Subject: [PATCH 01/38] =?UTF-8?q?come=C3=A7ando=20a=20resolver=20exericici?= =?UTF-8?q?os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 ++++++++ .idea/inspectionProfiles/profiles_settings.xml | 6 ++++++ .idea/lista-de-exercicios-python-brasil.iml | 12 ++++++++++++ .idea/misc.xml | 4 ++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ secao_01_estrutura_sequencial/ex_01_alo_mundo.py | 1 + .../ex_02_escreva_um_numero.py | 2 ++ .../ex_03_imprima_soma_de_dois_numeros.py | 3 +++ .../ex_04_notas_bimestrais.py | 7 +++++++ .../ex_05_metros_para_centimetros.py | 3 +++ secao_01_estrutura_sequencial/ex_06_area_circulo.py | 3 +++ secao_01_estrutura_sequencial/ex_07_area_quadrado.py | 5 +++++ .../ex_01_imprimir_maior_numero.py | 4 ++++ 14 files changed, 72 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/lista-de-exercicios-python-brasil.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml 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 b790f2ecd..380383e00 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_centrimetros(): """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_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 From 6d4262760437a8dae73846d5796472d42fe1a251 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Tue, 24 May 2022 00:47:00 -0300 Subject: [PATCH 02/38] primeiros exericios resolvidos --- .gitignore | 3 ++- .../ex_08_horas_trabalhadas_mes.py | 3 +++ .../ex_09_fahrenheit_para_celsius.py | 3 +++ .../ex_10_celsius_para_fahrenheit.py | 3 +++ .../ex_11_contas_matematicas.py | 11 +++++++++++ secao_01_estrutura_sequencial/ex_12_peso_ideal.py | 3 +++ .../ex_13_peso_ideal_mulher_e_homem.py | 6 ++++++ .../ex_14_joao_papo_de_pescador.py | 8 ++++++++ secao_01_estrutura_sequencial/ex_15_clt_onerosa.py | 13 +++++++++++++ .../ex_16_loja_de_tintas_simples.py | 9 +++++++++ 10 files changed, 61 insertions(+), 1 deletion(-) 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/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..f708ebdf7 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,16 @@ """ +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}') From d121ab3384663a9eefe0bb010055bf5bbbcdb53a Mon Sep 17 00:00:00 2001 From: renzo Date: Tue, 24 May 2022 11:27:35 -0300 Subject: [PATCH 03/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2007=20da=20secao=20de=20repeticao?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_07_maior_de_5_numeros.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_07_maior_de_5_numeros.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 0315aa03c..fa67722eb 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -223,3 +223,7 @@ jobs: 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 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 new file mode 100644 index 000000000..3fc410ab3 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_07_maior_de_5_numeros.py @@ -0,0 +1,15 @@ +""" +Exercício 07 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que leia 5 números e informe o maior número. + + >>> calcular_maior_numero(1, 2, 3, 4, 5) + 5 + >>> calcular_maior_numero(-1, -30, -20, -15, -2) + -1 +""" + + +def calcular_maior_numero(n1: int, n2: int, n3: int, n4: int, n5: int, ) -> int: + """Escreva aqui em baixo a sua solução""" From affbe668a84e7dca1b8eff90cbae561d65eb7b4e Mon Sep 17 00:00:00 2001 From: renzo Date: Tue, 24 May 2022 11:28:20 -0300 Subject: [PATCH 04/38] Typo --- .../ex_05_metros_para_centimetros.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 380383e00..d1141bcf6 100644 --- a/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py +++ b/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py @@ -6,16 +6,16 @@ >>> from secao_01_estrutura_sequencial import ex_05_metros_para_centimetros >>> ex_05_metros_para_centimetros.input = lambda k: '1' - >>> ex_05_metros_para_centimetros.converter_metros_para_centrimetros() + >>> ex_05_metros_para_centimetros.converter_metros_para_centimetros() Transformando para centímetros dá 100.0 cm >>> ex_05_metros_para_centimetros.input = lambda k: '3.621' - >>> ex_05_metros_para_centimetros.converter_metros_para_centrimetros() + >>> ex_05_metros_para_centimetros.converter_metros_para_centimetros() Transformando para centímetros dá 362.1 cm """ -def converter_metros_para_centrimetros(): +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' From 4e8b04bd4f1e9746d38a0e06d9685dfdf7a7480f Mon Sep 17 00:00:00 2001 From: renzo Date: Tue, 24 May 2022 11:36:12 -0300 Subject: [PATCH 05/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2008=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_08_soma_e_media_de_5_numeros.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_08_soma_e_media_de_5_numeros.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index fa67722eb..5d87a291d 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -227,3 +227,7 @@ jobs: 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 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 new file mode 100644 index 000000000..f18abfd0d --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_08_soma_e_media_de_5_numeros.py @@ -0,0 +1,18 @@ +""" +Exercício 07 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que leia 5 números e informe a soma e a média dos números. + +Mostre a média com duas casas decimais. + + >>> calcular_soma_e_media(1, 2, 3, 4, 5) + 'Soma: 15, Média: 3.00' + >>> calcular_soma_e_media(-1, -30, -20, -15, -2) + 'Soma: -68, Média: -13.60' + +""" + + +def calcular_soma_e_media(n1: int, n2: int, n3: int, n4: int, n5: int) -> str: + """Escreva aqui em baixo a sua solução""" From dff76ae4f13f62703dd0b86aefb955fbc7304743 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 13:16:17 -0300 Subject: [PATCH 06/38] Corrigido testes do ex 17 s 01 para arrrendondar litros para cima --- .../ex_17_loja_de_tintas_complexa.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 5e451cbf3..09b7e7ffc 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 @@ -14,16 +14,16 @@ >>> from secao_01_estrutura_sequencial import ex_17_loja_de_tintas_complexa >>> ex_17_loja_de_tintas_complexa.input = lambda k: '100' >>> ex_17_loja_de_tintas_complexa.calcular_latas_e_preco_de_tinta() - Você deve comprar 18 litros de tinta. - Você pode comprar 2 lata(s) de 18 litros a um custo de R$ 160. Vão sobrar 17.7 litro(s) de tinta. - Você pode comprar 6 lata(s) de 3.6 litros a um custo de R$ 150. Vão sobrar 3.3 litro(s) de tinta. - Para menor custo, você pode comprar 1 lata(s) de 18 litros e 1 galão(ões) de 3.6 litros a um custo de R$ 105. Vão sobrar 3.3 litro(s) de tinta. + Você deve comprar 19 litros de tinta. + Você pode comprar 2 lata(s) de 18 litros a um custo de R$ 160. Vão sobrar 17.0 litro(s) de tinta. + Você pode comprar 6 lata(s) de 3.6 litros a um custo de R$ 150. Vão sobrar 2.6 litro(s) de tinta. + Para menor custo, você pode comprar 1 lata(s) de 18 litros e 1 galão(ões) de 3.6 litros a um custo de R$ 105. Vão sobrar 2.6 litro(s) de tinta. >>> ex_17_loja_de_tintas_complexa.input = lambda k: '200' >>> ex_17_loja_de_tintas_complexa.calcular_latas_e_preco_de_tinta() Você deve comprar 37 litros de tinta. - Você pode comprar 3 lata(s) de 18 litros a um custo de R$ 240. Vão sobrar 17.3 litro(s) de tinta. - Você pode comprar 11 lata(s) de 3.6 litros a um custo de R$ 275. Vão sobrar 2.9 litro(s) de tinta. - Para menor custo, você pode comprar 2 lata(s) de 18 litros e 1 galão(ões) de 3.6 litros a um custo de R$ 185. Vão sobrar 2.9 litro(s) de tinta. + Você pode comprar 3 lata(s) de 18 litros a um custo de R$ 240. Vão sobrar 17.0 litro(s) de tinta. + Você pode comprar 11 lata(s) de 3.6 litros a um custo de R$ 275. Vão sobrar 2.6 litro(s) de tinta. + Para menor custo, você pode comprar 2 lata(s) de 18 litros e 1 galão(ões) de 3.6 litros a um custo de R$ 185. Vão sobrar 2.6 litro(s) de tinta. """ From 0ae34da832a7cf5407579b87ec5a85945afd3b72 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 13:30:42 -0300 Subject: [PATCH 07/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2009=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_08_soma_e_media_de_5_numeros.py | 2 +- .../ex_09_numeros_impares_de_1_a_50.py | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 5d87a291d..481ceb3b3 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -231,3 +231,7 @@ jobs: 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 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 f18abfd0d..86b169bb6 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 @@ -1,5 +1,5 @@ """ -Exercício 07 da seção de estrutura sequencial da Python Brasil: +Exercício 08 da seção de estrutura sequencial da Python Brasil: https://wiki.python.org.br/EstruturaDeRepeticao Faça um programa que leia 5 números e informe a soma e a média dos números. 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 new file mode 100644 index 000000000..bdd9db777 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py @@ -0,0 +1,14 @@ +""" +Exercício 09 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50 + + >>> calcular_numeros_impares_de_1_a_50(1, 2, 3, 4, 5) + ''1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49' + +""" + + +def calcular_numeros_impares_de_1_a_50() -> str: + """Escreva aqui em baixo a sua solução""" From 1dbff9e5ab93fec39b81e2ef31a5b222457f01a2 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 14:27:09 -0300 Subject: [PATCH 08/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2009=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_09_numeros_impares_de_1_a_50.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 bdd9db777..b8a480990 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 @@ -4,8 +4,8 @@ Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50 - >>> calcular_numeros_impares_de_1_a_50(1, 2, 3, 4, 5) - ''1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49' + >>> calcular_numeros_impares_de_1_a_50() + '1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49' """ From 3920e6fb65894f38dec82e09febbdfb216d0fd81 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 14:51:00 -0300 Subject: [PATCH 09/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2010=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_10_gerar_numeros_de_intervalo.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 481ceb3b3..60a9635d9 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -235,3 +235,7 @@ jobs: 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 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 new file mode 100644 index 000000000..e2d0470fe --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py @@ -0,0 +1,18 @@ +""" +Exercício 10 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido +Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50por eles. + + >>> calcular_numeros_no_intervalo(1, 10) + '1, 2, 3, 4, 5, 6, 7, 8, 9' + >>> calcular_numeros_no_intervalo(-10, -1) + '-10, -9, -8, -7, -6, -5, -4, -3, -2' + >>> calcular_numeros_no_intervalo(-1, -10) + +""" + + +def calcular_numeros_no_intervalo(inicio:int, fim:int) -> str: + """Escreva aqui em baixo a sua solução""" From 3de6d92a36a84cc11f2be840c94a09394a212f5f Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 14:52:19 -0300 Subject: [PATCH 10/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2010=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_10_gerar_numeros_de_intervalo.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 e2d0470fe..ab9d2ff39 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 @@ -10,9 +10,10 @@ >>> calcular_numeros_no_intervalo(-10, -1) '-10, -9, -8, -7, -6, -5, -4, -3, -2' >>> calcular_numeros_no_intervalo(-1, -10) + '' """ -def calcular_numeros_no_intervalo(inicio:int, fim:int) -> str: +def calcular_numeros_no_intervalo(inicio: int, fim: int) -> str: """Escreva aqui em baixo a sua solução""" From eb81489370432c1c3c534adbcdb578a729997d02 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 15:05:55 -0300 Subject: [PATCH 11/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2011=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ ...x_11_gerar_numeros_de_intervalo_e_somar.py | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 60a9635d9..c06d99adf 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -239,3 +239,7 @@ jobs: 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 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 new file mode 100644 index 000000000..17e7bfa88 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py @@ -0,0 +1,19 @@ +""" +Exercício 10 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido +Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50por eles. + + >>> calcular_numeros_no_intervalo_e_somar(1, 10) + 'Sequência: 1, 2, 3, 4, 5, 6, 7, 8, 9. Soma: 45' + >>> calcular_numeros_no_intervalo_e_somar(-10, -1) + 'Sequência: -10, -9, -8, -7, -6, -5, -4, -3, -2. Soma: -54' + >>> calcular_numeros_no_intervalo_e_somar(-1, -10) + 'Sequência: vazia. Soma: 0' + +""" + + +def calcular_numeros_no_intervalo_e_somar(inicio: int, fim: int) -> str: + """Escreva aqui em baixo a sua solução""" From f22faf3db36f75df6fa2be91a6cc741f823783ce Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 15:19:33 -0300 Subject: [PATCH 12/38] typpo --- secao_02_estrutura_de_decisao/ex_02_positivo_ou_negativo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bdb29efcf..23501b91e 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 @@ -9,7 +9,7 @@ >>> positivo_ou_negativo(-1) 'negativo' >>> positivo_ou_negativo(0) - 'não nem positivo nem negativo' + 'não tem positivo nem negativo' >>> positivo_ou_negativo(-100) 'negativo' """ From ffbcd781674f5b43f86d140b15060bd80676ef84 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 15:20:38 -0300 Subject: [PATCH 13/38] typo --- .../ex_10_gerar_numeros_de_intervalo.py | 3 +-- .../ex_11_gerar_numeros_de_intervalo_e_somar.py | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 ab9d2ff39..09838c651 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 @@ -2,8 +2,7 @@ Exercício 10 da seção de estrutura sequencial da Python Brasil: https://wiki.python.org.br/EstruturaDeRepeticao -Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido -Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50por eles. +Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido. >>> calcular_numeros_no_intervalo(1, 10) '1, 2, 3, 4, 5, 6, 7, 8, 9' 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 17e7bfa88..c7de8f9f9 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 @@ -2,8 +2,9 @@ Exercício 10 da seção de estrutura sequencial da Python Brasil: https://wiki.python.org.br/EstruturaDeRepeticao -Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido -Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50por eles. + +Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido. +Também mostre a soma dos números da sequência. >>> calcular_numeros_no_intervalo_e_somar(1, 10) 'Sequência: 1, 2, 3, 4, 5, 6, 7, 8, 9. Soma: 45' From 0be910691f443510ccecdacc9eea56d18c796b67 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 15:28:33 -0300 Subject: [PATCH 14/38] Consertando arquivo do CI --- .github/workflows/corretor_de_exercicios.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index c06d99adf..608cd66a5 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -5,7 +5,6 @@ on: push: branches: - main - jobs: build: runs-on: ubuntu-latest From e2e103d1d86f5f8cf95fb63eeaa80559ce1e5f8f Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 15:31:15 -0300 Subject: [PATCH 15/38] Consertando arquivo do CI --- .github/workflows/corretor_de_exercicios.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 608cd66a5..021e06a01 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -5,6 +5,7 @@ on: push: branches: - main + jobs: build: runs-on: ubuntu-latest @@ -238,7 +239,7 @@ jobs: 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 + - 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 From aa5357d28321e7c79002c05e83cd21827738f163 Mon Sep 17 00:00:00 2001 From: renzo Date: Wed, 25 May 2022 16:02:53 -0300 Subject: [PATCH 16/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2012=20da=20se=C3=A7=C3=A3o=20de=20repeti=C3=A7=C3=A3?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 + ...x_11_gerar_numeros_de_intervalo_e_somar.py | 2 +- .../ex_12_taboada.py | 126 ++++++++++++++++++ 3 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 secao_03_estrutura_de_repeticao/ex_12_taboada.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 021e06a01..e54a0da4b 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -243,3 +243,7 @@ jobs: 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: | + python -m doctest -f secao_03_estrutura_de_repeticao/ex_12_taboada.py 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 c7de8f9f9..875432bf8 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 @@ -1,5 +1,5 @@ """ -Exercício 10 da seção de estrutura sequencial da Python Brasil: +Exercício 11 da seção de estrutura sequencial da Python Brasil: https://wiki.python.org.br/EstruturaDeRepeticao 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..33b0b9d54 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_12_taboada.py @@ -0,0 +1,126 @@ +""" +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""" From 0e7ce3dbf55fbd1fc2724d5747317cd982153093 Mon Sep 17 00:00:00 2001 From: Renzo Date: Thu, 26 May 2022 20:53:20 -0300 Subject: [PATCH 17/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2013=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_13_potenciacao.py | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_13_potenciacao.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index e54a0da4b..43d260ae2 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -247,3 +247,7 @@ jobs: if: always() run: | python -m doctest -f secao_03_estrutura_de_repeticao/ex_12_taboada.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 diff --git a/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py b/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py new file mode 100644 index 000000000..617b82620 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py @@ -0,0 +1,20 @@ +""" +Exercício 13 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que peça dois números, base e expoente, calcule e mostre o primeiro número elevado ao segundo número. +Não utilize a função de potência da linguagem. + + + >>> calcular_potencia(base=2, expoente=3) + 8 + >>> calcular_potencia(base=3, expoente=2) + 9 + >>> calcular_potencia(base=2, expoente=10) + 1024 + +""" + + +def calcular_potencia(base: int, expoente: int) -> int: + """Escreva aqui em baixo a sua solução""" From 7f444b864577b3d104755525fe8d6c11c544fe60 Mon Sep 17 00:00:00 2001 From: renzo Date: Fri, 27 May 2022 11:02:05 -0300 Subject: [PATCH 18/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2014=20da=20se=C3=A7=C3=A3o=20de=20repeti=C3=A7=C3=A3?= =?UTF-8?q?o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #31 --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_14_qtde_pares_e_impares.py | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 43d260ae2..a149eaadd 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -251,3 +251,7 @@ jobs: 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 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 new file mode 100644 index 000000000..2da60f37a --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py @@ -0,0 +1,20 @@ +""" +Exercício 14 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade de números pares e a quantidade de números impares. + + >>> calcular_potencia(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + 'Existem 5 números pares e 5 números impares' + >>> calcular_potencia(12, 2, 3, 4, 5, 6, 7, 8, 9, 10) + 'Existem 6 números pares e 4 números impares' + >>> calcular_potencia(1, 1, 1, 1, 1, 1, 1, 1, 1,1) + 'Existem 0 números pares e 10 números impares' + >>> calcular_potencia(2, 2, 2, 2, 2, 2, 2, 2, 2,2) + 'Existem 10 números pares e 0 números impares' + +""" + + +def calcular_potencia(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""" From 804b43a1b1d6e3070612920df657101b8979423d Mon Sep 17 00:00:00 2001 From: renzo Date: Fri, 27 May 2022 11:07:34 -0300 Subject: [PATCH 19/38] =?UTF-8?q?Refatorada=20nome=20de=20fun=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20ex=2014=20secao=2003?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #31 --- .../ex_14_qtde_pares_e_impares.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 2da60f37a..2881cc0a0 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 @@ -4,17 +4,17 @@ Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade de números pares e a quantidade de números impares. - >>> calcular_potencia(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + >>> calcular_qtde_numeros_pares_e_impares(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 'Existem 5 números pares e 5 números impares' - >>> calcular_potencia(12, 2, 3, 4, 5, 6, 7, 8, 9, 10) + >>> calcular_qtde_numeros_pares_e_impares(12, 2, 3, 4, 5, 6, 7, 8, 9, 10) 'Existem 6 números pares e 4 números impares' - >>> calcular_potencia(1, 1, 1, 1, 1, 1, 1, 1, 1,1) + >>> calcular_qtde_numeros_pares_e_impares(1, 1, 1, 1, 1, 1, 1, 1, 1,1) 'Existem 0 números pares e 10 números impares' - >>> calcular_potencia(2, 2, 2, 2, 2, 2, 2, 2, 2,2) + >>> calcular_qtde_numeros_pares_e_impares(2, 2, 2, 2, 2, 2, 2, 2, 2,2) 'Existem 10 números pares e 0 números impares' """ -def calcular_potencia(n1: int, n2: int, n3: int, n4: int, n5: int, n6: int, n7: int, n8: int, n9: int, n10: int) -> str: +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""" From d24a607c665c5120711706e3a0ca820c2eea34c3 Mon Sep 17 00:00:00 2001 From: renzo Date: Fri, 27 May 2022 11:20:16 -0300 Subject: [PATCH 20/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2015=20da=20se=C3=A7=C3=A3o=20de=20repeti=C3=A7=C3=A3?= =?UTF-8?q?o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #33 --- .github/workflows/corretor_de_exercicios.yml | 4 +++ .../ex_15_fibonnacci_ate_n.py | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index a149eaadd..55c381a32 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -255,3 +255,7 @@ jobs: 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 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 new file mode 100644 index 000000000..bde925c25 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py @@ -0,0 +1,27 @@ +""" +Exercício 15 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +A série de Fibonacci é formada pela seqüência 1,1,2,3,5,8,13,21,34,55,... Faça um programa capaz de gerar a série até o +n−ésimo termo. + + >>> calcular_serie_de_fibonacci(1) + '1' + >>> calcular_serie_de_fibonacci(2) + '1, 1' + >>> calcular_serie_de_fibonacci(3) + '1, 1, 2' + >>> calcular_serie_de_fibonacci(4) + '1, 1, 2, 3' + >>> calcular_serie_de_fibonacci(5) + '1, 1, 2, 3, 5' + >>> calcular_serie_de_fibonacci(6) + '1, 1, 2, 3, 5, 8' + >>> calcular_serie_de_fibonacci(7) + '1, 1, 2, 3, 5, 8, 13' + +""" + + +def calcular_serie_de_fibonacci(n: int) -> str: + """Escreva aqui em baixo a sua solução""" From 49598cff1f7e1b97b37b2c24e0941e68cc01f84e Mon Sep 17 00:00:00 2001 From: renzo Date: Fri, 27 May 2022 11:35:44 -0300 Subject: [PATCH 21/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2016=20da=20se=C3=A7=C3=A3o=20de=20repeti=C3=A7=C3=A3?= =?UTF-8?q?o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #33 --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_16_fibonnacci_ate_valor_maior_que_500.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_16_fibonnacci_ate_valor_maior_que_500.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 55c381a32..6ea58cafb 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -259,3 +259,7 @@ jobs: 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 \ No newline at end of file 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 new file mode 100644 index 000000000..ab7c70038 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_16_fibonnacci_ate_valor_maior_que_500.py @@ -0,0 +1,14 @@ +""" +Exercício 16 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +A série de Fibonacci é formada pela seqüência 0,1,1,2,3,5,8,13,21,34,55,... Faça um programa que gere a série até que o + valor seja maior que 500. + + >>> calcular_serie_de_fibonacci_ate_valor_ser_maior_que_500() + '0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610' +""" + + +def calcular_serie_de_fibonacci_ate_valor_ser_maior_que_500() -> str: + """Escreva aqui em baixo a sua solução""" From 2e662678cdd7f1ab081c07e4510bd1ae7e5bbace Mon Sep 17 00:00:00 2001 From: Renzo Date: Mon, 30 May 2022 18:08:47 -0300 Subject: [PATCH 22/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2017=20da=20se=C3=A7=C3=A3o=20de=20estrutura=20de=20r?= =?UTF-8?q?epeti=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 6 ++++- .../ex_17_fatorial.py | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 secao_03_estrutura_de_repeticao/ex_17_fatorial.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 6ea58cafb..1dbc31dc7 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -262,4 +262,8 @@ jobs: - 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 \ No newline at end of file + 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 diff --git a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py new file mode 100644 index 000000000..0188fcfa3 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py @@ -0,0 +1,25 @@ +""" +Exercício 17 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. +Ex.: 5!=5.4.3.2.1=120 + + >>> calcular_fatorial(0) + 1 + >>> calcular_fatorial(1) + 1 + >>> calcular_fatorial(2) + 2 + >>> calcular_fatorial(3) + 6 + >>> calcular_fatorial(4) + 24 + >>> calcular_fatorial(5) + 120 + +""" + + +def calcular_fatorial(n: int) -> int: + """Escreva aqui em baixo a sua solução""" From 9908bc04aa9d1baaac27138b72cb560b32fabdf1 Mon Sep 17 00:00:00 2001 From: renzo Date: Tue, 31 May 2022 10:37:12 -0300 Subject: [PATCH 23/38] =?UTF-8?q?Feita=20corre=C3=A7=C3=A3o=20do=20exerc?= =?UTF-8?q?=C3=ADcio=2018=20da=20se=C3=A7=C3=A3o=20de=20repeti=C3=A7=C3=A3?= =?UTF-8?q?o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/corretor_de_exercicios.yml | 4 ++++ .../ex_18_estatisticas_de_n_numeros.py | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py diff --git a/.github/workflows/corretor_de_exercicios.yml b/.github/workflows/corretor_de_exercicios.yml index 1dbc31dc7..d32fd237f 100644 --- a/.github/workflows/corretor_de_exercicios.yml +++ b/.github/workflows/corretor_de_exercicios.yml @@ -267,3 +267,7 @@ jobs: 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 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 new file mode 100644 index 000000000..6a2b52932 --- /dev/null +++ b/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py @@ -0,0 +1,20 @@ +""" +Exercício 18 da seção de estrutura sequencial da Python Brasil: +https://wiki.python.org.br/EstruturaDeRepeticao + +Faça um programa que, dado um conjunto de N números, determine o menor valor, o maior valor e a soma dos valores. + + >>> calcular_estatisticas() + 'Maior valor: não existe. Menor valor: não existe. Soma: 0' + >>> calcular_estatisticas(1) + 'Maior valor: 1. Menor valor: 1. Soma: 1' + >>> calcular_estatisticas(1, 2) + 'Maior valor: 2. Menor valor: 1. Soma: 3' + >>> calcular_estatisticas(1, 2, -1) + 'Maior valor: 2. Menor valor: -1. Soma: 2' + +""" + + +def calcular_estatisticas(*numeros) -> int: + """Escreva aqui em baixo a sua solução""" From c8f0dc691547a8b8d80a04904bbf726012f50047 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Tue, 31 May 2022 16:00:38 -0300 Subject: [PATCH 24/38] =?UTF-8?q?continuidade=20da=20resolu=C3=A7=C3=A3o?= =?UTF-8?q?=20dos=20exercicios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_18_tempo_de_download.py | 4 ++++ .../ex_02_positivo_ou_negativo.py | 6 ++++++ secao_02_estrutura_de_decisao/ex_03_F_ou_M.py | 6 ++++++ .../ex_04_vogal_ou_consoante.py | 5 +++++ .../ex_06_maior_numero_de_3_numeros.py | 2 ++ .../ex_07_maior_e_menor_numero_de_3_numeros.py | 5 +++++ .../ex_08_escolha_de_produto.py | 3 +++ .../ex_09_numeros_decrescentes.py | 3 +++ .../ex_10_cumprimento_em_turno.py | 8 ++++++++ .../ex_13_dia_da_semana.py | 13 +++++++++++++ secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py | 4 ++++ 11 files changed, 59 insertions(+) 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..621e01d4a 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 + print(f'O tempo aproximado do Download é: {tempo_download / 60} minuto(s)')/ 60} minuto(s)') 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_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..36acf4f4f 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,11 @@ def cumprimentar(turno: str): """Escreva aqui em baixo a sua solução""" + if turno.upper() == 'M': + return 'Bom dia!' + elif turno.upper() == 'V': + return 'Boa tarde!' + elif turno.upper() == 'N': + return 'Boa noite!' + else: + return 'Valor Inválido!' \ 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..dcc5564c7 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,16 @@ 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] + else: + return 'Dia Inválido' 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 From efd8ffd167f890276c7fa634892bb07c2066306f Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Wed, 1 Jun 2022 14:09:38 -0300 Subject: [PATCH 25/38] =?UTF-8?q?se=C3=A7=C3=A3o=201=20solucionada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_16_loja_de_tintas_simples.py | 2 -- .../ex_17_loja_de_tintas_complexa.py | 19 ++++++++++++++++++- .../ex_18_tempo_de_download.py | 4 ++-- .../ex_22_par_ou_impar.py | 4 ++++ .../ex_01_numero_valido.py | 7 +++++++ .../ex_02_validador_de_senha.py | 7 +++++++ .../ex_03_validador_de_cadastro.py | 2 ++ .../ex_15_fibonnacci_ate_n.py | 15 +++++++++++++++ 8 files changed, 55 insertions(+), 5 deletions(-) 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 f708ebdf7..2ec8e23ed 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,8 +17,6 @@ """ -from math import ceil, floor - def calcular_latas_e_preco_de_tinta(): """Escreva aqui em baixo a sua solução""" 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 621e01d4a..4302198b2 100644 --- a/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py +++ b/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py @@ -23,5 +23,5 @@ 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 - print(f'O tempo aproximado do Download é: {tempo_download / 60} minuto(s)')/ 60} minuto(s)') + 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_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_03_estrutura_de_repeticao/ex_01_numero_valido.py b/secao_03_estrutura_de_repeticao/ex_01_numero_valido.py index 168481e57..568b972f4 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 int(numero) >= 0 and 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..84482fe0b 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,10 @@ def validar_senha(): """Escreva aqui em baixo a sua solução""" + senha = input('') + login = input('') + + if login == senha: + print('Senha deve ser diferente do login') + else: + print(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..caef45517 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,5 @@ def cadastrar_usuario(nome: str, idade: int, salario: float, sexo: str, estado_civil: str): """Escreva aqui em baixo a sua solução""" + if len(nome) < 3 and 0 <= idade <= 150 and salario > 0 and sexo in ('m', 'f') and estado_civil in ('s', 'c', 'v', 'd'): + print('Cadastro realizado com sucesso') \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py b/secao_03_estrutura_de_repeticao/ex_15_fibonnacci_ate_n.py index bde925c25..58722a083 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,18 @@ 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 \ No newline at end of file From 1c40c987001ba71b9f4d5bacb7fcaad16fb597a9 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Thu, 2 Jun 2022 23:11:05 -0300 Subject: [PATCH 26/38] =?UTF-8?q?continuado=20a=20resolu=C3=A7=C3=A3o=20do?= =?UTF-8?q?s=20exercicios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_05_notas_parciais.py | 7 ++++++ .../ex_11_salario_tabajara.py | 15 +++++++++++ .../ex_12_clt_assalto.py | 25 +++++++++++++++++++ .../ex_14_atribuicoes_de_conceitos.py | 14 +++++++++++ .../ex_15_triangulo.py | 9 +++++++ .../ex_16_equacao_segundo_grau.py | 15 +++++++++++ .../ex_18_validador_de_data.py | 24 ++++++++++++++++++ .../ex_19_decomposicao_de_numero.py | 2 ++ .../ex_20_3_notas_parciais.py | 8 ++++++ secao_02_estrutura_de_decisao/ex_21_troco.py | 10 +++++--- .../ex_23_inteiro_ou_decimal.py | 4 +++ .../ex_25_sherlock.py | 11 ++++++++ .../ex_26_posto_de_gasolina.py | 16 ++++++++++++ .../ex_28_mercado_tabajara.py | 19 ++++++++++++++ .../ex_04_crescimento_populacional.py | 1 + .../ex_06_numeros_1_a_20.py | 7 ++++++ .../ex_07_maior_de_5_numeros.py | 2 ++ .../ex_08_soma_e_media_de_5_numeros.py | 4 +++ .../ex_09_numeros_impares_de_1_a_50.py | 2 ++ .../ex_13_potenciacao.py | 4 +++ .../ex_18_estatisticas_de_n_numeros.py | 9 +++++++ 21 files changed, 204 insertions(+), 4 deletions(-) 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_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..d54b53cc4 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,28 @@ 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 - (salario_bruto * 0.03) + inss_desconto = salario_bruto - (salario_bruto * 0.1) + fgts_desconto = salario_bruto * 0.11 + + if salario_bruto <= 900: + ir_desconto = 0 + elif salario_bruto <= 1500: + ir_desconto = salario_bruto * 0.05 + elif salario_bruto <= 2500: + ir_desconto = salario_bruto * 0.1 + else: + ir_desconto = salario_bruto * 0.2 + + total_descontos = ir_desconto + inss_desconto + sindicato_desconto + fgts_desconto + salario_liquido = salario_bruto - total_descontos + salarario_bruto_formatado = f': R${salario_bruto:.2f}' + + print(f'Salário Bruto: (R$ {valor_hora:.2f} * {horas_trabalhadas})R$ {salarario_bruto_formatado.rjust(12)}') + print(f'(-) IR ({ir_desconto:.2f}%) :R$ {ir_desconto:<8.2f}') + print(f'(-) INSS ({inss_desconto:.2f}%) :R$ {inss_desconto:.2f}') + print(f'(-) Sindicato ({sindicato_desconto:.2f}%) : R$ {sindicato_desconto:<8.2f}') + print(f'FGTS ({fgts_desconto:.2f}%) : R$ {fgts_desconto:.2f}') + print(f'Total de descontos : R$ {total_descontos:.2f}') + print(f'Salário Liquido : R$ {salario_liquido:.2f}') \ No newline at end of file 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 8b6ea5927..a6d00bd39 100644 --- a/secao_02_estrutura_de_decisao/ex_15_triangulo.py +++ b/secao_02_estrutura_de_decisao/ex_15_triangulo.py @@ -27,3 +27,12 @@ def classificar_trinagulo(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' + else: + 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_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..c69eec7e5 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,5 @@ def decompor_numero(numero: int): """Escreva aqui em baixo a sua solução""" + numero = numero + 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 f3b73be48..fe9007e6a 100644 --- a/secao_02_estrutura_de_decisao/ex_21_troco.py +++ b/secao_02_estrutura_de_decisao/ex_21_troco.py @@ -28,9 +28,11 @@ def calcular_troco(valor: int) -> str: """Escreva aqui em baixo a sua solução""" tipos_de_notas = [1, 5, 10, 50, 100] - pedacos=[] + pedacos = 4 resto = valor while resto > 0: - tipo_de_nota = tipos_de_notas.pop() - if len(pedacos)==1: - return pedacos.pop() + valor = divmod(resto, tipos_de_notas[pedacos]) + notas, resto = valor + print(notas, tipos_de_notas[pedacos], resto) + pedacos -= 1 + 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_25_sherlock.py b/secao_02_estrutura_de_decisao/ex_25_sherlock.py index 6fccc6995..db348e9fb 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 investivar(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_28_mercado_tabajara.py b/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py index fa2daf360..6fe0771bc 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.95) + 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_04_crescimento_populacional.py b/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py index a2109cfb5..80876e435 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,4 @@ def calcular_ano_ultrapassagem_populacional() -> str: """Escreva aqui em baixo a sua solução""" + return 'População de A, depois de 63 ano(s) será de 515033 pessoas, superando a de B, que será de 510964 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..0e4148a61 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 = [x for x in range(1, 21)] + + for numero in lista: + if formato == 'um_abaixo_do_outro': + print(str(numero)) + else: + print(str(numero), end=' ' if numero != 20 else '\n') \ 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..98a69eb54 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,5 @@ 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) \ No newline at end of file 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..6ddca7e0e 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,7 @@ 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}' \ No newline at end of file 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..3c2347f09 100644 --- a/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py +++ b/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py @@ -12,3 +12,5 @@ def calcular_numeros_impares_de_1_a_50() -> str: """Escreva aqui em baixo a sua solução""" + + [] \ 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..f973a6f9a 100644 --- a/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py +++ b/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py @@ -18,3 +18,7 @@ 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 \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py b/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py index 6a2b52932..cd671b775 100644 --- a/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py +++ b/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py @@ -18,3 +18,12 @@ def calcular_estatisticas(*numeros) -> int: """Escreva aqui em baixo a sua solução""" + numero = numeros + + if len(numero) == 0: + 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}' \ No newline at end of file From a2bda2b127cdeb69fc369b2173cb6ebfae0a170b Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Fri, 3 Jun 2022 09:33:03 -0300 Subject: [PATCH 27/38] =?UTF-8?q?e=20l=C3=A1=20vamos=20n=C3=B3s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- secao_02_estrutura_de_decisao/ex_21_troco.py | 6 ++++++ .../ex_24_operacao.py | 19 +++++++++++++++++++ .../ex_28_mercado_tabajara.py | 2 +- .../ex_02_validador_de_senha.py | 14 +++++++++----- .../ex_09_numeros_impares_de_1_a_50.py | 3 ++- .../ex_10_gerar_numeros_de_intervalo.py | 11 ++++++++++- ...x_11_gerar_numeros_de_intervalo_e_somar.py | 13 ++++++++++++- .../ex_12_taboada.py | 5 +++++ .../ex_14_qtde_pares_e_impares.py | 9 +++++++++ .../ex_17_fatorial.py | 4 ++++ 10 files changed, 77 insertions(+), 9 deletions(-) diff --git a/secao_02_estrutura_de_decisao/ex_21_troco.py b/secao_02_estrutura_de_decisao/ex_21_troco.py index fe9007e6a..9cd2253d7 100644 --- a/secao_02_estrutura_de_decisao/ex_21_troco.py +++ b/secao_02_estrutura_de_decisao/ex_21_troco.py @@ -28,11 +28,17 @@ def calcular_troco(valor: int) -> str: """Escreva aqui em baixo a sua solução""" tipos_de_notas = [1, 5, 10, 50, 100] + notas = ['nota de R$ 1', 'nota de R$ 5', 'nota de R$ 10', 'nota de R$ 50', 'nota de R$ 100'] pedacos = 4 + quantidade_de_notas = [] resto = valor while resto > 0: valor = divmod(resto, tipos_de_notas[pedacos]) notas, resto = valor print(notas, tipos_de_notas[pedacos], resto) + quantidade_de_notas.append(str(notas)) pedacos -= 1 + + + diff --git a/secao_02_estrutura_de_decisao/ex_24_operacao.py b/secao_02_estrutura_de_decisao/ex_24_operacao.py index 73fd5778f..c60253345 100644 --- a/secao_02_estrutura_de_decisao/ex_24_operacao.py +++ b/secao_02_estrutura_de_decisao/ex_24_operacao.py @@ -31,3 +31,22 @@ 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}') + if resultado % 2 == 0: + par_ou_impar = 'par' + else: + par_ou_impar = 'impar' + if resultado > 0: + positivo_ou_negativo = 'positivo' + elif resultado == 0: + positivo_ou_negativo = 'neutro' + else: + positivo_ou_negativo = 'negativo' + if resultado % 1 == 0: + inteiro_ou_decimal = 'inteiro' + else: + inteiro_ou_decimal = 'decimal' + if resultado < 0: + print(f'Resultado: {resultado:.2f}\nNúmero é {positivo_ou_negativo} e {inteiro_ou_decimal}.') + else: + print(f'Resultado: {resultado:.2f}\nNú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_28_mercado_tabajara.py b/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py index 6fe0771bc..0178cc2cb 100644 --- a/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py +++ b/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py @@ -62,7 +62,7 @@ def calcular_preco_da_carne(tipo_de_carne: str, kilos_de_carne: int, forma_de_pa 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.95) + 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_02_validador_de_senha.py b/secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py index 84482fe0b..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,10 +21,14 @@ def validar_senha(): """Escreva aqui em baixo a sua solução""" - senha = input('') + login = input('') + senha = input('') - if login == senha: - print('Senha deve ser diferente do login') - else: - print(f'Cadastro realizado com suceso, seu login é {login}') \ No newline at end of file + 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_09_numeros_impares_de_1_a_50.py b/secao_03_estrutura_de_repeticao/ex_09_numeros_impares_de_1_a_50.py index 3c2347f09..747cb8670 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 @@ -13,4 +13,5 @@ def calcular_numeros_impares_de_1_a_50() -> str: """Escreva aqui em baixo a sua solução""" - [] \ No newline at end of file + lista = [str(x) for x in range(1, 51) if x % 2 != 0] + return ', '.join(lista) \ No newline at end of file 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..38d2124c8 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,16 @@ '' """ - +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) \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py b/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py index 875432bf8..66c1c7683 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 @@ -15,6 +15,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}' \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_12_taboada.py b/secao_03_estrutura_de_repeticao/ex_12_taboada.py index 33b0b9d54..7747c82ef 100644 --- a/secao_03_estrutura_de_repeticao/ex_12_taboada.py +++ b/secao_03_estrutura_de_repeticao/ex_12_taboada.py @@ -124,3 +124,8 @@ 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_14_qtde_pares_e_impares.py b/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py index 2881cc0a0..0fe2420d3 100644 --- a/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py +++ b/secao_03_estrutura_de_repeticao/ex_14_qtde_pares_e_impares.py @@ -18,3 +18,12 @@ def calcular_qtde_numeros_pares_e_impares(n1: int, n2: int, n3: int, n4: int, n5: int, n6: int, n7: int, n8: int, n9: int, n10: int) -> str: """Escreva aqui em baixo a sua solução""" + numeros = [n1, n2, n3, n4, n5, n6, n7, n8, n9, n10] + 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' \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py index 0188fcfa3..5feadfb15 100644 --- a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py +++ b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py @@ -23,3 +23,7 @@ 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) \ No newline at end of file From 86675838a57ffbfbc7a46f9c7a9f61a31f707a4c Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Mon, 23 May 2022 14:53:41 -0300 Subject: [PATCH 28/38] =?UTF-8?q?come=C3=A7ando=20a=20resolver=20exericici?= =?UTF-8?q?os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 ++++++++ .idea/inspectionProfiles/profiles_settings.xml | 6 ++++++ .idea/lista-de-exercicios-python-brasil.iml | 12 ++++++++++++ .idea/misc.xml | 4 ++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ secao_01_estrutura_sequencial/ex_01_alo_mundo.py | 1 + .../ex_02_escreva_um_numero.py | 2 ++ .../ex_03_imprima_soma_de_dois_numeros.py | 3 +++ .../ex_04_notas_bimestrais.py | 7 +++++++ .../ex_05_metros_para_centimetros.py | 3 +++ secao_01_estrutura_sequencial/ex_06_area_circulo.py | 3 +++ secao_01_estrutura_sequencial/ex_07_area_quadrado.py | 5 +++++ .../ex_01_imprimir_maior_numero.py | 4 ++++ 14 files changed, 72 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/lista-de-exercicios-python-brasil.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml 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_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 From 66aee8b653d51ff6664ec91bfcb4a869d38d5a4b Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Tue, 24 May 2022 00:47:00 -0300 Subject: [PATCH 29/38] primeiros exericios resolvidos --- .gitignore | 3 ++- .../ex_08_horas_trabalhadas_mes.py | 3 +++ .../ex_09_fahrenheit_para_celsius.py | 3 +++ .../ex_10_celsius_para_fahrenheit.py | 3 +++ .../ex_11_contas_matematicas.py | 11 +++++++++++ secao_01_estrutura_sequencial/ex_12_peso_ideal.py | 3 +++ .../ex_13_peso_ideal_mulher_e_homem.py | 6 ++++++ .../ex_14_joao_papo_de_pescador.py | 8 ++++++++ secao_01_estrutura_sequencial/ex_15_clt_onerosa.py | 13 +++++++++++++ .../ex_16_loja_de_tintas_simples.py | 9 +++++++++ 10 files changed, 61 insertions(+), 1 deletion(-) 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/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..f708ebdf7 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,16 @@ """ +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}') From 973121a48b43d1f2aa6bf3b0af3f602a7b4104e8 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Fri, 3 Jun 2022 11:20:08 -0300 Subject: [PATCH 30/38] hortifluti --- .../ex_10_cumprimento_em_turno.py | 12 ++--- .../ex_13_dia_da_semana.py | 3 +- .../ex_24_operacao.py | 51 ++++++++++++------- .../ex_27_hortifruti.py | 29 +++++++++++ 4 files changed, 67 insertions(+), 28 deletions(-) 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 36acf4f4f..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,11 +25,7 @@ def cumprimentar(turno: str): """Escreva aqui em baixo a sua solução""" - if turno.upper() == 'M': - return 'Bom dia!' - elif turno.upper() == 'V': - return 'Boa tarde!' - elif turno.upper() == 'N': - return 'Boa noite!' - else: - return 'Valor Inválido!' \ No newline at end of file + 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_13_dia_da_semana.py b/secao_02_estrutura_de_decisao/ex_13_dia_da_semana.py index dcc5564c7..85340e21c 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 @@ -40,5 +40,4 @@ def calcular_dia_da_semana(numero: int): } if numero in dias: return dias[numero] - else: - return 'Dia Inválido' + return 'Dia Inválido' diff --git a/secao_02_estrutura_de_decisao/ex_24_operacao.py b/secao_02_estrutura_de_decisao/ex_24_operacao.py index c60253345..e1e67c77e 100644 --- a/secao_02_estrutura_de_decisao/ex_24_operacao.py +++ b/secao_02_estrutura_de_decisao/ex_24_operacao.py @@ -32,21 +32,36 @@ 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}') - if resultado % 2 == 0: - par_ou_impar = 'par' - else: - par_ou_impar = 'impar' - if resultado > 0: - positivo_ou_negativo = 'positivo' - elif resultado == 0: - positivo_ou_negativo = 'neutro' - else: - positivo_ou_negativo = 'negativo' - if resultado % 1 == 0: - inteiro_ou_decimal = 'inteiro' - else: - inteiro_ou_decimal = 'decimal' - if resultado < 0: - print(f'Resultado: {resultado:.2f}\nNúmero é {positivo_ou_negativo} e {inteiro_ou_decimal}.') - else: - print(f'Resultado: {resultado:.2f}\nNúmero é {par_ou_impar}, {positivo_ou_negativo} e {inteiro_ou_decimal}.') \ No newline at end of file + + 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_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 From 2908e800e41ea8969e8c25b584c8daee0e61d6b5 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Sun, 5 Jun 2022 04:42:28 -0300 Subject: [PATCH 31/38] clt assalto resolvida --- .../ex_12_clt_assalto.py | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) 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 d54b53cc4..2f7c5de9f 100644 --- a/secao_02_estrutura_de_decisao/ex_12_clt_assalto.py +++ b/secao_02_estrutura_de_decisao/ex_12_clt_assalto.py @@ -54,27 +54,30 @@ 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 - (salario_bruto * 0.03) - inss_desconto = salario_bruto - (salario_bruto * 0.1) - fgts_desconto = salario_bruto * 0.11 - + 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 + fgts_desconto + total_descontos = ir_desconto + inss_desconto + sindicato_desconto salario_liquido = salario_bruto - total_descontos - salarario_bruto_formatado = f': R${salario_bruto:.2f}' - - print(f'Salário Bruto: (R$ {valor_hora:.2f} * {horas_trabalhadas})R$ {salarario_bruto_formatado.rjust(12)}') - print(f'(-) IR ({ir_desconto:.2f}%) :R$ {ir_desconto:<8.2f}') - print(f'(-) INSS ({inss_desconto:.2f}%) :R$ {inss_desconto:.2f}') - print(f'(-) Sindicato ({sindicato_desconto:.2f}%) : R$ {sindicato_desconto:<8.2f}') - print(f'FGTS ({fgts_desconto:.2f}%) : R$ {fgts_desconto:.2f}') - print(f'Total de descontos : R$ {total_descontos:.2f}') - print(f'Salário Liquido : R$ {salario_liquido:.2f}') \ No newline at end of file + 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 From ffc27f4704094073a562462c2a9dbaa5c01c21da Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Mon, 6 Jun 2022 10:35:29 -0300 Subject: [PATCH 32/38] secao 2 finalizada --- .../ex_13_dia_da_semana.py | 2 ++ .../ex_15_triangulo.py | 3 +-- .../ex_19_decomposicao_de_numero.py | 26 ++++++++++++++++++- secao_02_estrutura_de_decisao/ex_21_troco.py | 26 +++++++++++++------ 4 files changed, 46 insertions(+), 11 deletions(-) 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 85340e21c..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 @@ -41,3 +41,5 @@ def calcular_dia_da_semana(numero: int): if numero in dias: return dias[numero] return 'Dia Inválido' + + diff --git a/secao_02_estrutura_de_decisao/ex_15_triangulo.py b/secao_02_estrutura_de_decisao/ex_15_triangulo.py index a6d00bd39..ded131c58 100644 --- a/secao_02_estrutura_de_decisao/ex_15_triangulo.py +++ b/secao_02_estrutura_de_decisao/ex_15_triangulo.py @@ -34,5 +34,4 @@ def classificar_trinagulo(lado_a: float, lado_b: float, lado_c: float): return 'Triângulo Isósceles' else: return 'Triângulo Escaleno' - else: - return 'Não é um triângulo' \ No newline at end of file + return 'Não é um triângulo' \ 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 c69eec7e5..287358724 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,5 +52,29 @@ def decompor_numero(numero: int): """Escreva aqui em baixo a sua solução""" - numero = numero + 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) + pedacos += 1 + 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_21_troco.py b/secao_02_estrutura_de_decisao/ex_21_troco.py index 9cd2253d7..5aa92bb1b 100644 --- a/secao_02_estrutura_de_decisao/ex_21_troco.py +++ b/secao_02_estrutura_de_decisao/ex_21_troco.py @@ -27,18 +27,28 @@ def calcular_troco(valor: int) -> str: """Escreva aqui em baixo a sua solução""" - tipos_de_notas = [1, 5, 10, 50, 100] - notas = ['nota de R$ 1', 'nota de R$ 5', 'nota de R$ 10', 'nota de R$ 50', 'nota de R$ 100'] - pedacos = 4 + 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 - print(notas, tipos_de_notas[pedacos], resto) - quantidade_de_notas.append(str(notas)) - pedacos -= 1 - - + 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) From 20f4f05bee6c3e7b909f0c8e1fdebfc82c1387e2 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Mon, 6 Jun 2022 13:47:12 -0300 Subject: [PATCH 33/38] 12, 24, 25, 26 e 16 da secao 13 resolvidos --- .../ex_12_tabuada.py | 5 +++++ .../ex_16_fibonnacci_ate_valor_maior_que_500.py | 9 +++++++++ .../ex_24_media_artmetica.py | 7 +++++++ .../ex_25_classificador_de_turma.py | 9 +++++++++ .../ex_26_urna_eletronica.py | 17 +++++++++++++++++ 5 files changed, 47 insertions(+) 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_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_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}') + + From 81d9e83bf87af5559fbcc4f8d97236af362080d9 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Mon, 6 Jun 2022 15:23:48 -0300 Subject: [PATCH 34/38] exercicios 18, 19, 20, 22, 29 e 30 resolvidos --- .../ex_18_estatisticas_de_n_numeros.py | 9 +++------ ...x_19_estatisticas_de_n_numeros_com_limitacao.py | 11 +++++++++++ .../ex_20_fatorial_com_limitacao.py | 7 +++++++ .../ex_21_numero_primo.py | 9 +++++++++ .../ex_22_numero_primo_divisores.py | 14 ++++++++++++++ .../ex_29_loja_manuel_01.py | 8 +++++++- .../ex_30_padaria_manuel.py | 8 +++++++- 7 files changed, 58 insertions(+), 8 deletions(-) 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 57e3f9f1b..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 @@ -19,16 +19,13 @@ def calcular_estatisticas(*numeros) -> int: """Escreva aqui em baixo a sua solução""" - numero = numeros - - if len(numero) == 0: - f'Maior valor: não existe. Menor valor: não existe. Soma: 0' + 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}' -def calcular_estatisticas(*numeros) -> str: - """Escreva aqui em baixo a sua solução""" 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..991528dde 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,17 @@ 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_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..b4eac52ad 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 From dd466166f064231c382c8a14d67d1a4ac647e710 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Wed, 8 Jun 2022 23:33:54 -0300 Subject: [PATCH 35/38] resolvendo a secao 3 --- .../ex_19_decomposicao_de_numero.py | 7 ++++++- .../ex_03_validador_de_cadastro.py | 5 +++-- .../ex_04_crescimento_populacional.py | 11 ++++++++++- ...x_05_crescimento_populacional_parametrizavel.py | 12 ++++++++++++ .../ex_06_numeros_1_a_20.py | 12 ++++++------ .../ex_27_alunos_por_turma.py | 14 ++++++++++++++ .../ex_32_fatorial_com_operacoes.py | 7 +++++++ 7 files changed, 58 insertions(+), 10 deletions(-) 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 287358724..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 @@ -61,20 +61,25 @@ def decompor_numero(numero: int): 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) - pedacos += 1 + 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_03_estrutura_de_repeticao/ex_03_validador_de_cadastro.py b/secao_03_estrutura_de_repeticao/ex_03_validador_de_cadastro.py index caef45517..e6d060d14 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,5 +40,6 @@ def cadastrar_usuario(nome: str, idade: int, salario: float, sexo: str, estado_civil: str): """Escreva aqui em baixo a sua solução""" - if len(nome) < 3 and 0 <= idade <= 150 and salario > 0 and sexo in ('m', 'f') and estado_civil in ('s', 'c', 'v', 'd'): - print('Cadastro realizado com sucesso') \ No newline at end of file + if len(nome) >= 3 and (0 < idade <= 150) and salario > 0 and sexo in ('m', 'f') and estado_civil in ('s', 'c', 'v', 'd'): + print('Cadastro realizado com sucesso') + diff --git a/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py b/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py index 80876e435..17433712d 100644 --- a/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py +++ b/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py @@ -16,4 +16,13 @@ def calcular_ano_ultrapassagem_populacional() -> str: """Escreva aqui em baixo a sua solução""" - return 'População de A, depois de 63 ano(s) será de 515033 pessoas, superando a de B, que será de 510964 pessoas' \ No newline at end of file + pais_a = 80000 + pais_b = 200000 + ano = 0 + + while pais_b > pais_a: + pais_a = pais_a + (pais_a * 0.03) + pais_b = 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 0e4148a61..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,10 +33,10 @@ def escrever_numeros_de_1_a_20(formato:str) -> str: """Escreva aqui em baixo a sua solução""" - lista = [x for x in range(1, 21)] + lista = [str(x) for x in range(1, 21)] - for numero in lista: - if formato == 'um_abaixo_do_outro': - print(str(numero)) - else: - print(str(numero), end=' ' if numero != 20 else '\n') \ No newline at end of file + 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_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_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) From 047a679ea272b9c764974ae2f85022ee3e3ede2c Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Tue, 14 Jun 2022 15:10:15 -0300 Subject: [PATCH 36/38] solucionados --- .../ex_01_numero_valido.py | 2 +- .../ex_03_validador_de_cadastro.py | 1 + .../ex_04_crescimento_populacional.py | 4 ++-- .../ex_28_colecao_de_cds.py | 9 ++++++++ .../ex_30_padaria_manuel.py | 2 +- .../ex_31_conveniencia_manuel.py | 2 ++ .../ex_33_estatisticas_de_temperaturas.py | 8 +++++++ .../ex_36_tabuada_com_intervalo.py | 6 ++++++ .../ex_38_aumento_salarial.py | 2 ++ .../ex_39_sala_de_aula.py | 14 +++++++++++++ .../ex_44_eleicao_presidencial.py | 3 +++ .../ex_46_salto_em_distancia.py | 21 ++++++++++++++++--- .../ex_48_inteiro_invertido.py | 3 +++ .../ex_49_imprimir_serie.py | 12 +++++++++++ .../ex_50_soma_serie.py | 4 ++++ .../ex_11_intercalacao_de_3_vetores.py | 7 +++++++ secao_05_exercicios_funcoes/ex_01_piramide.py | 9 ++++++++ 17 files changed, 102 insertions(+), 7 deletions(-) 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 568b972f4..16b23478c 100644 --- a/secao_03_estrutura_de_repeticao/ex_01_numero_valido.py +++ b/secao_03_estrutura_de_repeticao/ex_01_numero_valido.py @@ -36,7 +36,7 @@ def obter_numero_valido(): """Escreva aqui em baixo a sua solução""" numero = input('') while True: - if numero.isdigit() and int(numero) >= 0 and int(numero) <= 10: + if numero.isdigit() and 0<= int(numero) <= 10: return int(numero) else: print(f'Número inválido: {numero}') 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 e6d060d14..4cb8bbdd3 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,6 +40,7 @@ def cadastrar_usuario(nome: str, idade: int, salario: float, sexo: str, estado_civil: str): """Escreva aqui em baixo a sua solução""" + if len(nome) >= 3 and (0 < idade <= 150) and salario > 0 and sexo in ('m', 'f') and estado_civil in ('s', 'c', 'v', 'd'): print('Cadastro realizado com sucesso') diff --git a/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py b/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py index 17433712d..a9f587b70 100644 --- a/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py +++ b/secao_03_estrutura_de_repeticao/ex_04_crescimento_populacional.py @@ -21,8 +21,8 @@ def calcular_ano_ultrapassagem_populacional() -> str: ano = 0 while pais_b > pais_a: - pais_a = pais_a + (pais_a * 0.03) - pais_b = pais_b + (pais_b * 0.015) + 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_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_30_padaria_manuel.py b/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py index b4eac52ad..57a1304d0 100644 --- a/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py +++ b/secao_03_estrutura_de_repeticao/ex_30_padaria_manuel.py @@ -124,4 +124,4 @@ def gerar_tabela_de_precos(preco_por_pao: float): 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 + 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_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_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_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 From 3f74da3b6da961d9af6aa3d8e2feb1ad3cc989b7 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Mon, 20 Jun 2022 18:24:34 -0300 Subject: [PATCH 37/38] =?UTF-8?q?fechadas=20as=20quest=C3=B5es=20de=20prim?= =?UTF-8?q?os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_03_validador_de_cadastro.py | 19 +++++++++-- .../ex_22_numero_primo_divisores.py | 1 - .../ex_23_primos_menores_que_um_numero.py | 33 +++++++++++++++++++ .../ex_45_corretor_de_provas.py | 3 ++ 4 files changed, 53 insertions(+), 3 deletions(-) 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 4cb8bbdd3..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,7 +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') + - if len(nome) >= 3 and (0 < idade <= 150) and salario > 0 and sexo in ('m', 'f') and estado_civil in ('s', 'c', 'v', 'd'): - print('Cadastro realizado com sucesso') 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 991528dde..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 @@ -58,7 +58,6 @@ def eh_primo(n: int) -> bool: else: for i in range(2, n): if n % i == 0: - print(f"É divisível por {i}") cont += 1 if cont > 0: 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_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 From 7b944892e1e0a347903fd0534468632d45387203 Mon Sep 17 00:00:00 2001 From: Fabricio assuncao Date: Fri, 24 Jun 2022 20:10:01 -0300 Subject: [PATCH 38/38] =?UTF-8?q?contribui=C3=A7=C3=A3o=20para=20open=20so?= =?UTF-8?q?urce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../corretor_de_exercicios_secao_05.yml | 4 ++ .../ex_14_quadro_magico.py | 40 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 secao_05_exercicios_funcoes/ex_14_quadro_magico.py 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/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""" +