diff --git a/.github/workflows/corretor_de_exercicios_secao_06.yml b/.github/workflows/corretor_de_exercicios_secao_06.yml index 38572f5b8..7d6baa287 100644 --- a/.github/workflows/corretor_de_exercicios_secao_06.yml +++ b/.github/workflows/corretor_de_exercicios_secao_06.yml @@ -23,6 +23,10 @@ jobs: if: always() run: | python -m doctest -f secao_06_exercicios_strings/ex_02_inversor_maisculo.py + - name: Correção do Exercício 04 da seção de Strings + - if: always() + run: | + python -m doctest -f secao_06_exercicios_strings/ex_04_nomes_vertical_escada.py - name: Correção do Exercício 05 da seção de Strings if: always() run: | diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.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-busertec.iml b/.idea/lista-de-exercicios-python-busertec.iml new file mode 100644 index 000000000..8b8c39547 --- /dev/null +++ b/.idea/lista-de-exercicios-python-busertec.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..553f848ab --- /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/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..07f12d2b6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + // Use o IntelliSense para saber mais sobre os atributos possíveis..... + // Focalizar para exibir as descrições dos atributos existentes. + // Para obter mais informações, acesse: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Arquivo Atual", + "type": "python", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal", + "justMyCode": true + }, + { + "name": "Rodar Doctest", + "type": "python", + "request": "launch", + "module": "doctest", + "args": ["${file}", "-v"], + "cwd": "${workspaceRoot}", + "justMyCode": true + } + ] +} diff --git a/lista-de-exercicios-python-brasil b/lista-de-exercicios-python-brasil new file mode 160000 index 000000000..938677f43 --- /dev/null +++ b/lista-de-exercicios-python-brasil @@ -0,0 +1 @@ +Subproject commit 938677f43ed7bbace55763965e427622852aa8e8 diff --git a/secao_01_estrutura_sequencial/ex_01_alo_mundo.py b/secao_01_estrutura_sequencial/ex_01_alo_mundo.py index b9b0821a6..4f6c941e7 100644 --- a/secao_01_estrutura_sequencial/ex_01_alo_mundo.py +++ b/secao_01_estrutura_sequencial/ex_01_alo_mundo.py @@ -12,4 +12,4 @@ 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..82b8edb5a 100644 --- a/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py +++ b/secao_01_estrutura_sequencial/ex_02_escreva_um_numero.py @@ -11,6 +11,11 @@ """ +from ast import Num + + def escreva_um_numero(): - """Escreva aqui em baixo a sua solução""" + # """Escreva aqui em baixo a sua solução""" + num=int(input("Digite um número:")) + print(f'O número informado foi {num}') \ No newline at end of file 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..a509f694d 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""" + numero1 = int(input('Digite um número: ')) + numero2 = int(input('Digite o segundo número: ')) + print (f'A soma dos dois números informados é {numero1 + numero2}') \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py b/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py index a1b189cd5..6a246f283 100644 --- a/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py +++ b/secao_01_estrutura_sequencial/ex_04_notas_bimestrais.py @@ -15,4 +15,8 @@ def calcular_media(): """Escreva aqui em baixo a sua solução""" - + media1 = float(input('Digite a media do 1 bimestre ')) + media2 = float(input('Digite a media do 2 bimestre ')) + media3 = float(input('Digite a media do 3 bimestre ')) + media4 = float(input('Digite a media do 4 bimestre ')) + print (f'A média anual é {(media1 + media2 + media3 + media4) / 4}') 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..3ed8886b9 100644 --- a/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py +++ b/secao_01_estrutura_sequencial/ex_05_metros_para_centimetros.py @@ -13,7 +13,19 @@ Transformando para centímetros dá 362.1 cm """ +# conversão feita do m vezes 100 +def conversao (m): + return 100* m + + # imput pedindo a quantidade de metros + print ('Transformando para centímetros dá: {(conversao (m))}cm') + # o 'f' do inicio garante a formatação usada, a conversao 'def' precisa + # estar entre chaves e o : .1f limita as casas decimais para apenas uma, arredondando as que sobram. def converter_metros_para_centimetros(): """Escreva aqui em baixo a sua solução""" + m = float(input('Digite a quantidade de metros para conversão:')) + print(f'Transformando para centímetros dá{(conversao (m)): .1f} cm') + + diff --git a/secao_01_estrutura_sequencial/ex_06_area_circulo.py b/secao_01_estrutura_sequencial/ex_06_area_circulo.py index 840559026..a6a10c0e0 100644 --- a/secao_01_estrutura_sequencial/ex_06_area_circulo.py +++ b/secao_01_estrutura_sequencial/ex_06_area_circulo.py @@ -18,3 +18,9 @@ def calcular_area_de_circulo(): """Escreva aqui em baixo a sua solução""" + + m = float(input('Digite o raio do círculo: ')) + + c = 3.1415* (m**2) + + print(f'A área do círculo com esse raio é: {c:.4f}') diff --git a/secao_01_estrutura_sequencial/ex_07_area_quadrado.py b/secao_01_estrutura_sequencial/ex_07_area_quadrado.py index 63b12a193..e2bf6c9bf 100644 --- a/secao_01_estrutura_sequencial/ex_07_area_quadrado.py +++ b/secao_01_estrutura_sequencial/ex_07_area_quadrado.py @@ -20,3 +20,12 @@ def calcular_area_de_quadrado(): """Escreva aqui em baixo a sua solução""" + + m = float(input('Digite o lado do quadrado: ')) **2 + + c = m * 2 + + print(f'A área do quadrado com esse lado é: {m:.2f}') + + print(f'O dobro da aŕea do quadrado é: {c:.2f}') + diff --git a/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py b/secao_01_estrutura_sequencial/ex_08_horas_trabalhadas_mes.py index 07ded093f..51e0b70ce 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,12 @@ def calcular_salario(): """Escreva aqui em baixo a sua solução""" + + m = float(input('Digite quanto você ganha por hora trabalhada: ')) + n = float(input('Digite quantas horas você trabalha por mês: ')) + + print(f'Seu salário desse mês é {m * n:.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..0db00ed7f 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""" + + m = float(input('Digite quantos graus Fahrenheit você quer converter para Celsius: ')) + print(f'Essa temperatura é de {(m-32)/1.8:.0f} Celsius') \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py b/secao_01_estrutura_sequencial/ex_10_celsius_para_fahrenheit.py index 76d97aa8d..9b94d4230 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""" + + m = float(input('Digite quantos graus Celsius você quer converter para Fahrenheit: ')) + print(f'Essa temperatura é de {m*1.8+32:.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..d4b935224 100644 --- a/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py +++ b/secao_01_estrutura_sequencial/ex_11_contas_matematicas.py @@ -23,4 +23,9 @@ def calcular_formulas(): """Escreva aqui em baixo a sua solução""" - + n1 = int(input('Digite o primeiro número inteiro ')) + n2 = int(input('Digite o segundo número inteiro ')) + nr = float(input('Digite o número real ')) + print(f'O produto do dobro do primeiro com metade do segundo é {(n1*2)*(n2/2):.2f}') + print(f'A soma do triplo do primeiro com o terceiro é {(n1*3)+nr:.2f}') + print(f'O terceiro elevado ao cubo é {nr**3:.2f}') diff --git a/secao_01_estrutura_sequencial/ex_12_peso_ideal.py b/secao_01_estrutura_sequencial/ex_12_peso_ideal.py index 1f8418fab..fca50c7d8 100644 --- a/secao_01_estrutura_sequencial/ex_12_peso_ideal.py +++ b/secao_01_estrutura_sequencial/ex_12_peso_ideal.py @@ -19,3 +19,5 @@ def calcular_peso_ideal(): """Escreva aqui em baixo a sua solução""" + a = float(input('Digite sua altura: ')) + print(f'Seu peso ideal é {(72.7 * a)-58:.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..e586d43c5 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,6 @@ def calcular_peso_ideal(): """Escreva aqui em baixo a sua solução""" + a = float(input('Digite sua altura: ')) + print(f'Seu peso ideal é {(62.1 * a)-44.7:.1f} kg, se você for mulher') + print(f'Seu peso ideal é {(72.7 * a)-58:.1f} kg, se você for homem') \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_14_joao_papo_de_pescador.py b/secao_01_estrutura_sequencial/ex_14_joao_papo_de_pescador.py index 16a2a211f..bc3c22d4f 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,13 @@ def calcular_peso_excedente_e_multa(): """Escreva aqui em baixo a sua solução""" + + p = float(input('Seu Jão, digite quantos kgs você pescou hoje: ')) + if p <= 50: + + print(f'O peso excedente de peixes é de {0:.2f} kg') + print(f'Por isso, a multa é de R$ {0:.2f}') + + else: + print(f'O peso excedente de peixes é de {p-50:.2f} kg') + print(f'Por isso, a multa é de R$ {(p-50)*4:.2f}') diff --git a/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py b/secao_01_estrutura_sequencial/ex_15_clt_onerosa.py index 901de0409..856ba8a52 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""" + + g = float(input('Digite quanto você ganha por hora trabalhada : ')) + h = float(input('Digite quantas horas você trabalha por mês: ')) + + print(f'+ Salário Bruto : {g*h:.2f}') + + print(f'- IR (11%) : R$ {(g*h) * 0.11 :.2f}') + + print(f'- INSS (8%) : R$ {(g*h) * 0.08 :.2f}') + + print(f'- Sindicato ( 5%) : R$ {(g*h) * 0.05 :.2f}') + + print(f'= Salário Liquido : R$ {(g*h)-(((g*h) * 0.11) + ((g*h) * 0.08) + ((g*h) * 0.05)):.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..1be1ee213 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 @@ -21,3 +21,9 @@ def calcular_latas_e_preco_de_tinta(): """Escreva aqui em baixo a sua solução""" + + from math import ceil + a_p = float(input('Digite a área a ser pintada em m2: ')) + l_p_m = ceil (a_p / 3) + n_d_l = ceil(l_p_m / 18) + print (f'Você deve comprar {n_d_l:.0f} lata(s) tinta ao custo de R$ {n_d_l * 80:.2f}') diff --git a/secao_01_estrutura_sequencial/ex_17_loja_de_tintas_complexa.py b/secao_01_estrutura_sequencial/ex_17_loja_de_tintas_complexa.py index 09b7e7ffc..dc478ab03 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 @@ -1,7 +1,6 @@ """ Exercício 17 da seção de estrutura sequencial da Python Brasil: https://wiki.python.org.br/EstruturaSequencial - Faça um Programa para uma loja de tintas. O programa deverá pedir o tamanho em metros quadrados da área a ser pintada. Considere que a cobertura da tinta é de 1 litro para cada 6 metros quadrados e que a tinta é vendida em latas de 18 litros, que custam R$ 80,00 ou em galões de 3,6 litros, que custam R$ 25,00. @@ -10,7 +9,6 @@ comprar apenas galões de 3,6 litros; misturar latas e galões, de forma que o custo seja menor. Acrescente 10% de folga e sempre arredonde os valores para cima, isto é, considere latas cheias. - >>> 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() @@ -24,9 +22,32 @@ 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. - """ +import math + def calcular_latas_e_preco_de_tinta(): """Escreva aqui em baixo a sua solução""" + a_quadrada = float(input('Digite o valor da área para cálculo: ')) + a_folga = a_quadrada * 1.1 + li_pm = math.ceil(a_folga / 6) + lata_li = math.ceil(li_pm / 18) + galao_li = math.ceil(li_pm / 3.5) + preco_lata = lata_li * 80 + preco_galao = galao_li * 25 + sobra_lata = (lata_li * 18) - li_pm + sobra_galao = (galao_li * 3.6) - li_pm + resto = li_pm % 18 + latas_int = math.floor(li_pm / 18) + galao_resto = math.ceil(resto / 3.6) + la_ga = (latas_int * 80) + (galao_resto * 25) + res_tot = ((latas_int * 18) + (galao_resto * 3.6)) - li_pm + + print(f'Você deve comprar {li_pm} litros de tinta.') + print( + f'Você pode comprar {lata_li} lata(s) de 18 litros a um custo de R$ {preco_lata}. Vão sobrar {sobra_lata:.1f} litro(s) de tinta.') + print( + f'Você pode comprar {galao_li} lata(s) de 3.6 litros a um custo de R$ {preco_galao}. Vão sobrar {sobra_galao:.1f} litro(s) de tinta.') + print( + f'Para menor custo, você pode comprar {latas_int} lata(s) de 18 litros e {galao_resto} galão(ões) de 3.6 litros a um custo de R$ {la_ga:.0f}. Vão sobrar {res_tot:.1f} litro(s) de tinta.') \ No newline at end of file diff --git a/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py b/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py index b24730f1a..e54d8ea65 100644 --- a/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py +++ b/secao_01_estrutura_sequencial/ex_18_tempo_de_download.py @@ -3,11 +3,10 @@ https://wiki.python.org.br/EstruturaSequencial Faça um programa que peça o tamanho de um arquivo para download (em MB) e a velocidade de um link de Internet (em Mbps), -calcule e informe o tempo aproximado de download do arquivo usando este link (em minutos). -Arredonde o tempo em minutos +calcule e o tempo em minutos >>> from secao_01_estrutura_sequencial import ex_18_tempo_de_download - >>> numeros =['50', '2500'] + >>> numeros = ['50', '2500'] >>> ex_18_tempo_de_download.input = lambda k: numeros.pop() >>> ex_18_tempo_de_download.calcular_tempo_de_download() O tempo aproximado do Download é: 7 minuto(s) @@ -21,3 +20,8 @@ def calcular_tempo_de_download(): """Escreva aqui em baixo a sua solução""" + + mb = float(input('Digite quantos MB tem o arquivo que você irá baixar: ')) + mbps = float(input('Digite qual é a velocidade da sua internet: ')) + tempo = (mb/(mbps / 8))/60 + print(f'O tempo aproximado do Download é: {tempo:.0f} minuto(s)') diff --git a/secao_02_estrutura_de_decisao/ex_01_imprimir_maior_numero.py b/secao_02_estrutura_de_decisao/ex_01_imprimir_maior_numero.py index e1d40a714..349211b44 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,8 @@ def maior_de_dois_numeros(x, y): """Escreva aqui em baixo a sua solução""" + + if x>y: + print(f'{x}') + else : + print(f'{y}') 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..4a4da806a 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: + print("'positivo'" ) + elif n == 0: + print("'não tem positivo nem negativo'" ) + else: + print("'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..1939cb2ba 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 == 'M' : + print("'M - Masculino'") + elif sexo == 'F' : + print("'F - Feminino'") + else: + print("'Sexo inválido'") \ No newline at end of file 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..dd469523c 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,10 @@ def vogal_ou_consoante(letra): """Escreva aqui em baixo a sua solução""" + vogais = ('aeiou') + if letra.lower() in vogais: + print("'vogal'") + else: + print("'consoante'") + + 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..076bcfc2e 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,9 @@ def notas_parciais(nota_1, nota_2): """Escreva aqui em baixo a sua solução""" +n = input(float(f'Digite a primeira nota do aluno: ')) +n2 = input(float(f'Digite a segunda nota do aluno: ')) +if (n + n2) / 2 >= 7: + print(f'Aprovado') +else: + print(f'Reprovado') \ 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..b279b0384 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,11 @@ def calcular_maior_de_3_numeros(x, y, z): """Escreva aqui em baixo a sua solução""" + + if x > y and x > z: + print(x) + elif y > x and y > z: + print(y) + else: + print(z) + 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..61d2a07c0 100644 --- a/secao_02_estrutura_de_decisao/ex_07_maior_e_menor_numero_de_3_numeros.py +++ b/secao_02_estrutura_de_decisao/ex_07_maior_e_menor_numero_de_3_numeros.py @@ -21,3 +21,17 @@ def calcular_maior_de_3_numeros(x, y, z): """Escreva aqui em baixo a sua solução""" + maior=x + if y > x and y > z: + maior=y + elif z > x and z > y: + maior=z + + menor=x + if y < x and y < z: + menor=y + elif z < x and z < y: + menor=z + + print(f'Maior: {maior}') + print(f'Menor: {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..0b9bee8d1 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,9 @@ def decidir_melhor_produto(x, y, z): """Escreva aqui em baixo a sua solução""" + menor=x + if y < x and y < z: + menor=y + elif z < x and z < y: + menor=z + print(f'Melhor produto custa R$ {menor:.2f}') 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..694971fff 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""" + reversen = [x, y, z] + reversen.sort (reverse=True) + print(f'{reversen [0]}, {reversen [1]}, {reversen [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..9d2beeef9 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': + print("'Bom dia!'") + elif turno.upper () == 'V': + print("'Boa tarde!'") + elif turno.upper () == 'N': + print("'Boa noite!'") + else: + print("'Valor Inválido!'") \ 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..9aed1268a 100644 --- a/secao_02_estrutura_de_decisao/ex_11_salario_tabajara.py +++ b/secao_02_estrutura_de_decisao/ex_11_salario_tabajara.py @@ -39,5 +39,32 @@ """ +from re import S + + def calcular_aumento(salario: float): """Escreva aqui em baixo a sua solução""" + if salario <= 280.00: + print(f'Salário atual: R$ {salario:.2f}') + print('Aumento porcentual: 20%') + print(f'Valor do aumento: R$ {(salario * 1.2) - salario:.2f}') + print(f'Novo salário: R$ {salario *1.2:.2f}') + + elif salario <= 700.00: + print(f'Salário atual: R$ {salario:.2f}') + print('Aumento porcentual: 15%') + print(f'Valor do aumento: R$ {(salario * 1.15) - salario:.2f}') + print(f'Novo salário: R$ {salario *1.15:.2f}') + + elif salario <= 1500.00: + print(f'Salário atual: R$ {salario:.2f}') + print('Aumento porcentual: 10%') + print(f'Valor do aumento: R$ {(salario * 1.1) - salario:.2f}') + print(f'Novo salário: R$ {salario *1.1:.2f}') + + elif salario > 1500.00: + print(f'Salário atual: R$ {salario:.2f}') + print('Aumento porcentual: 5%') + print(f'Valor do aumento: R$ {(salario * 1.05) - salario:.2f}') + print(f'Novo salário: R$ {salario *1.05:.2f}') + \ 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..8204597c3 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,91 @@ def calcular_salario_liquido(valor_hora: float, horas_trabalhadas: int): """Escreva aqui em baixo a sua solução""" + + # primeiro calculo, onde o salário bruto é < 900 e o imposto de renda é = 0 OK + + # variáveis imutáveis + + salario_bruto = valor_hora * horas_trabalhadas + inss = (1.1 * salario_bruto) - salario_bruto + sindicato = (1.03 * salario_bruto) - salario_bruto + fgts = (1.11 * salario_bruto) - salario_bruto + + + # ----------------------- + + if salario_bruto <= 900: + + desconto_com_ir_isento = inss + sindicato + salario_liquido_sem_ir = salario_bruto - desconto_com_ir_isento + + print(f'Salário Bruto: (R$ {valor_hora:.2f} * {horas_trabalhadas}) : R$ {salario_bruto:.2f}') + print(f'(-) IR (0%) : R$ 0.00') + print(f'(-) INSS (10%) : R$ {inss:.2f}') + print(f'(-) Sindicato (3%) : R$ {sindicato:.2f}') + print(f'FGTS (11%) : R$ {fgts:.2f}') + print(f'Total de descontos : R$ {desconto_com_ir_isento:.2f}') + print(f'Salário Liquido : R$ {salario_liquido_sem_ir:.2f}') + + # segundo calculo OK + + elif salario_bruto > 900 and salario_bruto <= 1500: + + ir_5 = (1.05 * salario_bruto) - salario_bruto + descontos1 = inss + sindicato + ir_5 + salario_liquido1 = salario_bruto - descontos1 + + print(f'Salário Bruto: (R$ {valor_hora:.2f} * {horas_trabalhadas}) : R$ {salario_bruto:.2f}') + print(f'(-) IR (5%) : R$ {ir_5:.2f}') + print(f'(-) INSS (10%) : R$ {inss:.2f}') + print(f'(-) Sindicato (3%) : R$ {sindicato:.2f}') + print(f'FGTS (11%) : R$ {fgts:.2f}') + print(f'Total de descontos : R$ {descontos1:.2f}') + print(f'Salário Liquido : R$ {salario_liquido1:.2f}') + + # teceiro calculo + + elif salario_bruto > 1500 and salario_bruto <= 2500: + + ir_10 = (1.1 * salario_bruto) - salario_bruto + descontos2 = inss + sindicato + ir_10 + salario_liquido2 = salario_bruto - descontos2 + + print(f'Salário Bruto: (R$ {valor_hora:.2f} * {horas_trabalhadas}) : R$ {salario_bruto:.2f}') + print(f'(-) IR (10%) : R$ {ir_10:.2f}') + # VER PQ O CALCULO DO TERCEIRO TA DANDO KAO AQUI + print(f'(-) INSS (10%) : R$ {inss:.2f}') + print(f'(-) Sindicato (3%) : R$ {sindicato:.2f}') + print(f'FGTS (11%) : R$ {fgts:.2f}') + print(f'Total de descontos : R$ {descontos2:.2f}') + print(f'Salário Liquido : R$ {salario_liquido2:.2f}') + + # quarto calculo + + elif salario_bruto > 2500: + + ir_20 = (1.2 * salario_bruto) - salario_bruto + descontos3 = inss + sindicato + ir_20 + salario_liquido3 = salario_bruto - descontos3 + + print(f'Salário Bruto: (R$ {valor_hora:.2f} * {horas_trabalhadas}) : R$ {salario_bruto:.2f}') + print(f'(-) IR (20%) : R$ {ir_20:.2f}') + print(f'(-) INSS (10%) : R$ {inss:.2f}') + print(f'(-) Sindicato (3%) : R$ {sindicato:.2f}') + print(f'FGTS (11%) : R$ {fgts:.2f}') + print(f'Total de descontos : R$ {descontos3:.2f}') + print(f'Salário Liquido : R$ {salario_liquido3:.2f}') + + # fim do código ... + + + + + + + + + + + + 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..62bcaf4ea 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,19 @@ def calcular_dia_da_semana(numero: int): """Escreva aqui em baixo a sua solução""" + if numero == 1: + print("'Domingo'") + elif numero == 2: + print("'Segunda'") + elif numero == 3: + print("'Terça'") + elif numero == 4: + print("'Quarta'") + elif numero == 5: + print("'Quinta'") + elif numero == 6: + print ("'Sexta'") + elif numero == 7: + print ("'Sábado'") + else: + print("'Dia Inválido'") \ 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..f0b10718c 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,42 @@ def calcular_conceito(nota_1: float, nota_2: float): """Escreva aqui em baixo a sua solução""" + + media = (nota_1 + nota_2) / 2 + +# Entre 9.0 e 10.0 A + # Entre 7.5 e 9.0 B + # Entre 6.0 e 7.5 C + # Entre 4.0 e 6.0 D + # Entre 4.0 e zero E + + if media >= 9.0: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.') + print(f'Média: {media:.1f}') + print(f'Conceito: A') + print(f'Status: APROVADO') + + elif media >= 7.5 and media < 9.0: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.') + print(f'Média: {media:.1f}') + print(f'Conceito: B') + print(f'Status: APROVADO') + + elif media >= 6.0 and media < 7.5 : + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.') + print(f'Média: {media:.1f}') + print(f'Conceito: C') + print(f'Status: APROVADO') + + elif media >= 4.0 and media < 6.0 : + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.') + print(f'Média: {media:.1f}') + print(f'Conceito: D') + print(f'Status: REPROVADO') + + elif media >= 0 and media < 4.0: + print(f'Notas: {nota_1:.1f} e {nota_2:.1f}.') + print(f'Média: {media:.1f}') + print(f'Conceito: E') + print(f'Status: REPROVADO') + diff --git a/secao_02_estrutura_de_decisao/ex_15_triangulo.py b/secao_02_estrutura_de_decisao/ex_15_triangulo.py index 7da3edebb..05b902bba 100644 --- a/secao_02_estrutura_de_decisao/ex_15_triangulo.py +++ b/secao_02_estrutura_de_decisao/ex_15_triangulo.py @@ -27,3 +27,14 @@ def classificar_triangulo(lado_a: float, lado_b: float, lado_c: float): """Escreva aqui em baixo a sua solução""" + + if lado_a + lado_b >= lado_c and lado_b + lado_c >= lado_a and lado_a + lado_c >= lado_b: + + if lado_a == lado_b and lado_a == lado_c: + print("'Triângulo Equilátero'") + elif lado_a == lado_b or lado_a == lado_c or lado_b == lado_c: + print("'Triângulo Isósceles'") + else: + print("'Triângulo Escaleno'") + else: + print("'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..81c45780c 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 @@ -24,5 +24,36 @@ """ +import math + + def resolver_equacao_do_segundo_grau(a: float, b: float, c: float): """Escreva aqui em baixo a sua solução""" + # primeiro teste: + if a == 0: + return 'Valor do coeficiente a deve ser diferente de 0' + # ----------------- + + delta = (b**2) - 4 * a * c + if delta < 0: + return f'Delta negativo ({delta}), por isso não existem raízes reais' + + # terceirao + + if delta == 0: + raiz = - b / 2 * a + + return f'Delta é 0, raíz única no valor de {raiz:.1f}' + + # quarteto + + if delta > 0: + raiz1 = ( -b + math.sqrt(delta) ) / 2 * a + raiz2 = ( -b - math.sqrt(delta) ) / 2 * a + print (f"'Delta é {delta}, raízes são {raiz1:.1f} e {raiz2:.1f}'") + + # se delta é negativo\: + #valor de delta: delta = b**2 - 4*a*c + #raiz (ou, solucao, no caso) da equacao: (-b - math.sqrt(delta))/2*a + #são duas soluçoes, 2° solucao (-b + math.sqrt(delta))/2 * a + \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py b/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py index cf1b9b11b..967a405c5 100644 --- a/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py +++ b/secao_02_estrutura_de_decisao/ex_17_ano_bissexto.py @@ -16,7 +16,12 @@ False """ - +import calendar def eh_ano_bissexto(ano: int): """Escreva aqui em baixo a sua solução""" + + if calendar.isleap(ano): + print('True') + else: + print('False') \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_18_validador_de_data.py b/secao_02_estrutura_de_decisao/ex_18_validador_de_data.py index 470fbd63d..a4174e966 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 @@ -21,6 +21,48 @@ """ - def validar_data(data: str): """Escreva aqui em baixo a sua solução""" + if len(data) >= 8: + day, month, year = data.split('/') + day = int(day.lstrip('0')) + month = int(month.lstrip('0')) + year = int(year) + if day in range(1, 29) and month in range(1, 12) and year in range(1, 9999): + return 'Data válida' + return 'Data inválida' + return 'Data inválida' + + + + + # if month > 12: + # return f'Data inválida' + # if year > 9999 and year < 0000: + # return f'Data inválida' + # else: + # return f'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..f3f0af2c2 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 @@ -6,7 +6,7 @@ mesmo. Observando os termos no plural a colocação do "e", da vírgula entre outros. Exemplo: 326 = 3 centenas, 2 dezenas e 6 unidades -12 = 1 dezena e 2 unidades Testar com: 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16 +12 = 1 dezena e 2 unidades Testar com: 326, 300, 100, 320, 310,305,' 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16 >>> decompor_numero(1000) 'O número precisa ser menor que 1000' @@ -52,3 +52,26 @@ def decompor_numero(numero: int): """Escreva aqui em baixo a sua solução""" + + #mais de mil e menos de zero + + if (numero) >= 1000: + print("'O número precisa ser menor que 1000'") + return + elif (numero) < 0: + print ("'O número precisa ser positivo'") + return + + centena = (numero//100) + dezena = (numero - (centena*100))//10 + unidade = (numero-(centena*100)-(dezena*10)) + print("'", end='') + print(f'{numero} = ', end='') + + if(centena): + print(f'{centena} centena{"s" if centena>1 else ""}{(", " if unidade else " e ") if dezena else (" e " if unidade else "")}', end='') + if(dezena): + print(f'{dezena} dezena{"s" if dezena>1 else ""}{" e " if unidade else ""}', end='') + if(unidade): + print (f'{unidade} unidade{"s" if unidade>1 else ""}', end='') + print("'") \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_20_3_notas_parciais.py b/secao_02_estrutura_de_decisao/ex_20_3_notas_parciais.py index c064ce5fd..7511b66ce 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 == 10: + return 'Aprovado com Distinção' + elif media >= 7: + return 'Aprovado' + else: + return 'Reprovado' \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_21_troco.py b/secao_02_estrutura_de_decisao/ex_21_troco.py index 7edac85b2..30721154a 100644 --- a/secao_02_estrutura_de_decisao/ex_21_troco.py +++ b/secao_02_estrutura_de_decisao/ex_21_troco.py @@ -27,3 +27,223 @@ def calcular_troco(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + + # notas_de_100_str = notas_de_50_str = notas_de_10_str = notas_de_5_str = notas_de_1_str = ' ' + # notas_de_100 = notas_de_50 = notas_de_10 = notas_de_5 = notas_de_1 = 0 + # notas_de_100, valor = divmod(valor, 100) + # notas_de_50, valor = divmod(valor, 50) + # notas_de_10, valor = divmod(valor, 10) + # notas_de_5, valor = divmod(valor, 5) + # notas_de_1, valor = divmod(valor, 1) + + # partes_numericas = 0 + # # print("'", end='') + + # if notas_de_100 == 1: + # notas_de_100_str == '1 nota de R$ 100' + # # print(f'{notas_de_100} {notas_de_100_str} ', end='') + # partes_numericas += 1 + # elif notas_de_100 > 1: + # notas_de_100_str == f'{notas_de_100} notas de R$ 100' + # # print(f'{notas_de_100} notas de R$ 100 ', end='') + # partes_numericas += 1 + + + + # if notas_de_50 == 1: + # notas_de_50_str == '1 nota de R$ 50' + # # print(f'{notas_de_50} nota de R$ 50, ', end='') + # partes_numericas += 1 + # elif notas_de_50 > 1: + # notas_de_50_str == f'{notas_de_50} notas de R$ 50' + # # print(f'{notas_de_50} notas de R$ 50, ', end='') + # partes_numericas += 1 + + + # if notas_de_10 == 1: + # notas_de_10_str == '1 nota de R$ 10' + # # print(f'{notas_de_10} nota de R$ 10, ', end='') + # partes_numericas += 1 + # elif notas_de_10 > 1: + # notas_de_10_str == 'f{notas_de_10} notas de R$ 10' + # # print(f'{notas_de_10} notas de R$ 10, ', end='') + # partes_numericas += 1 + + + # if notas_de_5 == 1: + # notas_de_5_str == '1 nota de R$ 5' + # # print(f'{notas_de_5} nota de R$ 5, ', end='') + # partes_numericas += 1 + # elif notas_de_5 > 1: + # notas_de_5_str == f'{notas_de_5} notas de R$ 1' + # # print(f'{notas_de_5} notas de R$ 1, ', end='') + # partes_numericas += 1 + + + # if notas_de_1 == 1: + # notas_de_1_str == '1 notas de R$ 1' + # # print(f'{notas_de_1} nota de R$ 1', end='') + # partes_numericas += 1 + # elif notas_de_1 > 1: + # notas_de_1_str == f'{notas_de_1} notas de R$ 1' + # # print(f'{notas_de_1} notas de R$ 1', end='') + # partes_numericas += 1 + + + # if partes_numericas == 1: + # if notas_de_100_str != ' ': + # print(f"'{notas_de_100_str}'") + # elif notas_de_50_str != ' ': + # print(f"'{notas_de_50_str}'") + # elif notas_de_10_str != ' ': + # print(f"'{notas_de_10_str}'") + # elif notas_de_5_str != ' ': + # print(f"'{notas_de_5_str}'") + # elif notas_de_1_str != ' ': + # print(f"'{notas_de_1_str}'") + # elif partes_numericas == 5: + # print(f"'{notas_de_100_str}, {notas_de_50_str}, {notas_de_10_str}, {notas_de_5_str} e {notas_de_1_str}'") + + # elif partes_numericas == 2: + # if notas_de_10_str != ' ' and notas_de_1_str != ' ': + # print(f"'{notas_de_10_str} e {notas_de_1_str}'") + + # elif partes_numericas == 4: + # print(f"'{notas_de_100_str}, {notas_de_50_str}, {notas_de_5_str} e {notas_de_1_str}'") + + + # notas_de_100_str = notas_de_50_str = notas_de_10_str = notas_de_5_str = notas_de_1_str = ' ' + + + # saque = valor + notas_100 = notas_50 = notas_10 = nota_5 = nota_1 = 0 + notas_100, valor = divmod(valor,100) + notas_50, valor = divmod(valor,50) + notas_10, valor = divmod(valor,10) + nota_5, valor = divmod(valor,5) + nota_1, valor = divmod(valor,1) + parte = 0 + print("""'""",end="") + + if notas_100 == 1: + print(f"""{notas_100} nota de R$ 100""",end="") + parte += 1 + elif notas_100 > 1: + print(f"""{notas_100} notas de R$ 100""",end="") + parte += 1 + + + if notas_50 != 0 and parte == 1: + print(",",end=" ") + if notas_50 == 1: + print(f"""{notas_50} nota de R$ 50""",end="") + parte += 1 + elif notas_50 > 1: + print(f"""{notas_50} notas de R$ 50""",end="") + parte += 1 + + + if parte != 0 and notas_10 != 0: + print(",",end=" ") + if notas_10 == 1: + print(f"""{notas_10} nota de R$ 10""",end="") + parte += 1 + elif notas_10 > 1: + print(f"""{notas_10} notas de R$ 10""",end="") + parte += 1 + + # notas de 5 + + if parte != 0 and nota_5 != 0: + print(",",end=" ") + if nota_5 == 1: + print(f"""{nota_5} nota de R$ 5""",end="") + parte += 1 + elif nota_5 > 1: + print(f"""{nota_5} notas de R$ 5""",end="") + parte += 1 + + # notas de 1 + + if parte != 0 and nota_1 != 0: + print(" e",end=" ") + if nota_1 == 1: + print(f"""{nota_1} nota de R$ 1""",end="") + elif notas_10 > 1: + print(f"""{nota_1} notas de R$ 1""",end="") + print("""'""") + +# def calcular_troco(valor: int) -> str: +# """Escreva aqui em baixo a sua solução""" + +# valor = valor +# cem_str = cinquenta_str = dez_str = cinco_str = um_str = ' ' +# partes_numericas = 0 +# if saque <= 600: +# cem, numero_sobrando = divmod(saque, 100) +# if cem == 1: +# cem_str = '1 nota de R$ 100' +# partes_numericas += 1 +# elif cem > 1: +# cem_str = f'{cem} notas de R$ 100' +# partes_numericas += 1 + + +# #Atualiza o número que sobra + +# cinquenta, numero_sobrando = divmod(numero_sobrando, 50) +# if cinquenta == 1: +# cinquenta_str = '1 nota de R$ 50' +# partes_numericas += 1 +# elif cinquenta > 1: +# cinquenta_str = f'{cinquenta} notas de R$ 50' +# partes_numericas += 1 + +# #Atualiza o número que sobra + +# dez, numero_sobrando = divmod(numero_sobrando, 10) +# if dez == 1: +# dez_str = '1 nota de R$ 10' +# partes_numericas += 1 +# elif dez > 1: +# dez_str = f'{dez} notas de R$ 10' +# partes_numericas += 1 + +# cinco, numero_sobrando = divmod(numero_sobrando, 5) +# if cinco == 1: +# cinco_str = '1 nota de R$ 5' +# partes_numericas += 1 +# elif cinco > 1: +# cinco_str = f'{cinco} notas de R$ 5' +# partes_numericas += 1 + +# #Atualiza o número que sobra + +# if numero_sobrando == 1: +# um_str = '1 nota de R$ 1' +# partes_numericas += 1 +# elif numero_sobrando > 1: +# um_str = f'{numero_sobrando} notas de R$ 1' +# partes_numericas += 1 + + +# if partes_numericas == 1: +# if cem_str != ' ': +# print(f"'{cem_str}'") +# elif cinquenta_str != ' ': +# print(f"'{cinquenta_str}'") +# elif dez_str != ' ': +# print(f"'{dez_str}'") +# elif cinco_str != ' ': +# print(f"'{cinco_str}'") +# elif um_str != ' ': +# print(f"'{um_str}'") +# elif partes_numericas == 5: +# print(f"'{cem_str}, {cinquenta_str}, {dez_str}, {cinco_str} e {um_str}'") + +# elif partes_numericas == 2: +# if dez_str != ' ' and um_str != ' ': +# print(f"'{dez_str} e {um_str}'") + +# elif partes_numericas == 4: +# print(f"'{cem_str}, {cinquenta_str}, {cinco_str} e {um_str}'") \ No newline at end of file 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..efb374049 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,6 @@ def decidir_se_eh_par_ou_impar(valor: int) -> str: """Escreva aqui em baixo a sua solução""" + if valor % 2 == 0: + return 'Par' + return 'Impar' diff --git a/secao_02_estrutura_de_decisao/ex_23_inteiro_ou_decimal.py b/secao_02_estrutura_de_decisao/ex_23_inteiro_ou_decimal.py index 9f2d9da04..00850da5d 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 @@ -18,7 +18,11 @@ >>> decidir_se_eh_inteiro_ou_decimal('3.1415') 'Decimal' """ - +import math def decidir_se_eh_inteiro_ou_decimal(valor: str) -> str: """Escreva aqui em baixo a sua solução""" + if math.floor(float(valor)) == float(valor): + return 'Inteiro' + else: + return 'Decimal' \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_24_operacao.py b/secao_02_estrutura_de_decisao/ex_24_operacao.py index 73fd5778f..27b054906 100644 --- a/secao_02_estrutura_de_decisao/ex_24_operacao.py +++ b/secao_02_estrutura_de_decisao/ex_24_operacao.py @@ -7,7 +7,7 @@ par ou ímpar; positivo ou negativo; inteiro ou decimal. - + Mostre o restultado com duas casas decimais >>> fazer_operacao_e_classificar(2, 3, '+') @@ -31,3 +31,43 @@ def fazer_operacao_e_classificar(n_1: float, n_2: float, operacao: str): """Escreva aqui em baixo a sua solução""" + if operacao == '+': + resultado = n_1 + n_2 + print (f'Resultado: {resultado:.2f}') + + if operacao == '-': + resultado = n_1 - n_2 + print (f'Resultado: {resultado:.2f}') + + if operacao == '*': + resultado = n_1 * n_2 + print (f'Resultado: {resultado:.2f}') + + if operacao == '/': + resultado = n_1 / n_2 + print (f'Resultado: {resultado:.2f}') + + if resultado % 2 == 0: + par_impar = 'par' + else: + par_impar = 'impar' + + if resultado > 0: + positivo_negativo = 'positivo' + elif resultado == 0: + positivo_negativo = 'neutro' + else: + positivo_negativo = 'negativo' + + if resultado % 1 == 0: + inteiro_decimal = 'inteiro' + print(f'Número é {par_impar}, {positivo_negativo} e {inteiro_decimal}.') + else: + inteiro_decimal = 'decimal' + print(f'Número é {positivo_negativo} e {inteiro_decimal}.') + + + + + + \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_25_sherlock.py b/secao_02_estrutura_de_decisao/ex_25_sherlock.py index b9e2e1017..5911b225d 100644 --- a/secao_02_estrutura_de_decisao/ex_25_sherlock.py +++ b/secao_02_estrutura_de_decisao/ex_25_sherlock.py @@ -29,7 +29,17 @@ 'Inocente' """ - +from itertools import count def investigar(telefonou: str, estava_no_local: str, mora_perto: str, devia: str, trabalhou: str, ): """Escreva aqui em baixo a sua solução""" + pergunta = [telefonou, estava_no_local, mora_perto, devia, trabalhou] + resposta = pergunta.count('Sim') + if resposta == 2: + print("'Suspeito'") + elif resposta == 3 or resposta == 4: + print("'Cúmplice'") + elif resposta == 5: + print("'Assassino'") + else: + print("'Inocente'") \ 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..1a8ec6f37 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,14 @@ def calcular_abastecimento(litros_de_combustivel: float, tipo_de_combustivel: str) -> str: """Escreva aqui em baixo a sua solução""" + if litros_de_combustivel <= 20 and tipo_de_combustivel == 'A': + print(f"'{litros_de_combustivel} litro(s) de álcool custa(m): R$ {(1.9 * litros_de_combustivel):.2f}. Com 3% de desconto, fica R$ {(((1.9 * litros_de_combustivel * 2)) - ((1.9 * litros_de_combustivel)* 1.03)):.2f}'") + elif litros_de_combustivel > 20 and tipo_de_combustivel == 'A': + print(f"'{litros_de_combustivel} litro(s) de álcool custa(m): R$ {(1.9 * litros_de_combustivel):.2f}. Com 5% de desconto, fica R$ {(((1.9 * litros_de_combustivel * 2)) - ((1.9 * litros_de_combustivel)* 1.05)):.2f}'") + + elif litros_de_combustivel <= 20 and tipo_de_combustivel == 'G': + print(f"'{litros_de_combustivel} litro(s) de gasolina custa(m): R$ {(2.5 * litros_de_combustivel):.2f}. Com 4% de desconto, fica R$ {(((2.5 * litros_de_combustivel * 2)) - ((2.5 * litros_de_combustivel)* 1.04)):.2f}'") + + elif litros_de_combustivel > 20 and tipo_de_combustivel == 'G': + print(f"'{litros_de_combustivel} litro(s) de gasolina custa(m): R$ {(2.5 * litros_de_combustivel):.2f}. Com 6% de desconto, fica R$ {(((2.5 * litros_de_combustivel * 2)) - ((2.5 * litros_de_combustivel)* 1.06)):.2f}'") + diff --git a/secao_02_estrutura_de_decisao/ex_27_hortifruti.py b/secao_02_estrutura_de_decisao/ex_27_hortifruti.py index 2e468a508..520d5e5a3 100644 --- a/secao_02_estrutura_de_decisao/ex_27_hortifruti.py +++ b/secao_02_estrutura_de_decisao/ex_27_hortifruti.py @@ -57,5 +57,45 @@ """ +from this import d + + def calcular_preco_da_compra(kilos_de_morango: int, kilos_de_maca: int): """Escreva aqui em baixo a sua solução""" + # >>> calcular_preco_da_compra(2, 0) + # (+) Morango - valor: R$ 5.00 - quantidade: 2 kg - preço: R$ 2.50/kg + # (-) Desconto - valor: R$ 0.00 + # Valor Total: R$ 5.00 + + preco_morango = 2.20 + preco_maca = 1.50 + desconto = 0.00 + + if kilos_de_morango <= 5: + preco_morango = 2.50 + if kilos_de_maca <= 5: + preco_maca = 1.80 + + preco_total_frutas = (preco_maca * kilos_de_maca) + (preco_morango * kilos_de_morango) + kilo_total_frutas = kilos_de_maca + kilos_de_morango + + + + if kilo_total_frutas > 8 or preco_total_frutas > 25: + desconto = 0.10 + + preco_desconto = preco_total_frutas * desconto + + if kilos_de_morango > 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') + if kilos_de_maca > 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$ {preco_desconto:>5.2f}') + + print(f' Valor Total: R$ {preco_total_frutas - preco_desconto:>5.2f}') + + + + \ No newline at end of file diff --git a/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py b/secao_02_estrutura_de_decisao/ex_28_mercado_tabajara.py index fa2daf360..0269571ca 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,23 @@ 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: + preco_carne = { + 'Filé Duplo': 4.90, + 'Alcatra': 5.90, + 'Picanha': 6.90 + } + else: + preco_carne = { + 'Filé Duplo': 5.80, + 'Alcatra': 6.80, + 'Picanha': 7.80 + } + + preco_total = kilos_de_carne * preco_carne[tipo_de_carne] + if forma_de_pagamento == 'cartão tabajara': + preco_total_com_desconto = preco_total - (preco_total * 0.05) + print(f"'{kilos_de_carne} kg de {tipo_de_carne} a R$ {preco_carne[tipo_de_carne]:.2f}/kg saem a R$ {preco_total:.2f}. Com desconto de 5% pelo pagamento feito com cartão tabajara, fica R$ {preco_total_com_desconto:.2f}'") + else: + print(f"'{kilos_de_carne} kg de {tipo_de_carne} a R$ {preco_carne[tipo_de_carne]:.2f}/kg saem a R$ {preco_total:.2f}. Não há desconto, pagamento feito com {forma_de_pagamento}'") \ 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..2e0a32da4 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,16 @@ def obter_numero_valido(): """Escreva aqui em baixo a sua solução""" + while (True): + nota = input("Digite uma nota entre 0 e 10: ") + if not nota.isdigit() or (int(nota) < 0 or int(nota) > 10): + print(f"Número inválido: {nota}") + else: + break + + print(nota) + + + + + \ No newline at end of file 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..f0ce5d59e 100644 --- a/secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py +++ b/secao_03_estrutura_de_repeticao/ex_02_validador_de_senha.py @@ -21,3 +21,14 @@ def validar_senha(): """Escreva aqui em baixo a sua solução""" + + while(True): + usuario=(input("Digite o nome de usuário: ")) + senha=(input("Digite a senha de usuário: ")) + + if usuario == senha: + print('Senha deve ser diferente do login') + else: + break + + print(f"'Cadastro realizado com suceso, seu login é {usuario}'") \ 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..d7e44334a 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,25 @@ def cadastrar_usuario(nome: str, idade: int, salario: float, sexo: str, estado_civil: str): """Escreva aqui em baixo a sua solução""" + erros = [] + + if len(nome) < 3: + erros.append(f"Erro: o nome precisa ter 3 letras ou mais, não pode ser {nome}") + + if idade < 0 or idade > 150: + erros.append(f"Erro: a idade precisa estar entre 0 e 150, não pode ser {idade}") + + if salario <= 0: + erros.append(f"Erro: o salário precisa ser positivo, não pode ser {salario}") + + if not sexo in ["m", "f"]: + erros.append(f'Erro: o sexo precisa ser "m" ou "f", não pode ser "{sexo}"') + + if not estado_civil in ["s", "c", "v", "d"]: + erros.append(f'Erro: o estado civil precisa ser "s", "c", "v" ou "d", não pode ser "{estado_civil}"') + + if not erros: + print("Cadastro realizado com sucesso") + + for erro in erros: + print(erro) \ No newline at end of file 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..3e191f282 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,20 @@ def calcular_ano_ultrapassagem_populacional() -> str: """Escreva aqui em baixo a sua solução""" + anos = 0 + pais_a = 80000 + pais_b = 200000 + + porcentos_a = 0.03 + porcentos_b = 0.015 + + + while pais_a < pais_b: + crescimento_a = pais_a * porcentos_a + crescimento_b = pais_b * porcentos_b + pais_a += crescimento_a + pais_b += crescimento_b + anos += 1 + + print(f"'População de A, depois de {anos} ano(s) será de {pais_a:.0f} pessoas, superando a de B, que será de {pais_b:.0f} pessoas'") + \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_05_crescimento_populacional_parametrizavel.py b/secao_03_estrutura_de_repeticao/ex_05_crescimento_populacional_parametrizavel.py index 827d5d190..15d028760 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,17 @@ 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""" + + 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}%)' + + anos = 0 + + while populacao_menor < populacao_maior: + crescimento_a = populacao_menor * taxa_crescimento_populacao_menor + crescimento_b = populacao_maior * taxa_crescimento_populacao_maior + populacao_menor += crescimento_a + populacao_maior += crescimento_b + anos += 1 + + print(f"'População de A, depois de {anos} ano(s) será de {populacao_menor:.0f} pessoas, superando a de B, que será de {populacao_maior:.0f} 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..70dafbc54 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,32 @@ def escrever_numeros_de_1_a_20(formato:str) -> str: """Escreva aqui em baixo a sua solução""" + # lista = list(range(1,21)) + # print(formato) + + + if formato == 'um_abaixo_do_outro': + numero = 1 + while numero <= 20: + print(numero) + numero += 1 + else: + numero = 1 + while numero < 20: + print(numero, end=' ') + numero += 1 + if numero == 20: + print(numero, end='') + + + + + + + + + + + + + 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..c26192312 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,14 @@ def calcular_maior_numero(n1: int, n2: int, n3: int, n4: int, n5: int, ) -> int: """Escreva aqui em baixo a sua solução""" + lista = (n1, n2, n3, n4, n5) + maior = -100 + + for n in lista: + if n > maior: + maior = n + print(maior) + + + + \ 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..400ae3b6d 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""" + soma = n1 + n2 + n3 + n4 + n5 + media = soma / 5 + print(f"'Soma: {soma:.0f}, 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..c2c4a96a6 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,14 @@ def calcular_numeros_impares_de_1_a_50() -> str: """Escreva aqui em baixo a sua solução""" + numero = 1 + while numero <= 47 and numero %2 != 0: + if numero == 1: + print(f"'", end='') + print(f"{numero},", end=' ') + numero += 2 + if numero == 49: + print (f"{numero}'") + if numero > 49: + break + 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..1646dcfec 100644 --- a/secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py +++ b/secao_03_estrutura_de_repeticao/ex_10_gerar_numeros_de_intervalo.py @@ -16,3 +16,17 @@ def calcular_numeros_no_intervalo(inicio: int, fim: int) -> str: """Escreva aqui em baixo a sua solução""" + # caso o inicio seja maior q o fim: + if inicio > fim: + print("''") + # se as condições forem boas, o código continua: + for n in range (inicio, fim): + # no inicio, precisa ter uma ' pra bater com o doctest + if n == inicio: + print("'", end="") + # no fim (fim menos 1), ele precisa de uma ' pra fechar e bater com o doctest + if n == fim - 1: + print(f"{n}'", end="") + break + # aqui ele printa tudo + print(f"{n},", end=" ") 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..ff18a1de1 100644 --- a/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py +++ b/secao_03_estrutura_de_repeticao/ex_11_gerar_numeros_de_intervalo_e_somar.py @@ -18,3 +18,18 @@ def calcular_numeros_no_intervalo_e_somar(inicio: int, fim: int) -> str: """Escreva aqui em baixo a sua solução""" + # caso o inicio seja maior q o fim: + soma = 0 + if inicio > fim: + print("'Sequência: vazia. Soma: 0'") + # se as condições forem boas, o código continua: + for n in range (inicio, fim): + soma += n + if n == inicio: + print("'Sequência: ", end="") + # no fim (fim menos 1), ele precisa de uma ' pra fechar e bater com o doctest + if n == fim - 1: + print(f"{n}. Soma: {soma}'", end="") + break + # aqui ele printa tudo + print(f"{n},", end=" ") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_12_tabuada.py b/secao_03_estrutura_de_repeticao/ex_12_tabuada.py index f066ddd5a..7b37e9d47 100644 --- a/secao_03_estrutura_de_repeticao/ex_12_tabuada.py +++ b/secao_03_estrutura_de_repeticao/ex_12_tabuada.py @@ -124,3 +124,11 @@ def gerar_tabuada(n: int) -> str: """Escreva aqui em baixo a sua solução""" + if n <= 0 or n > 10: + print('Somente pode ser gerada tabuada de 1 a 10') + + else: + for tabuada in range (1 , 11): + multiplicacao = n * tabuada + print(f'{n} X {tabuada} = {multiplicacao}') + tabuada += 1 \ 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..c16db59fb 100644 --- a/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py +++ b/secao_03_estrutura_de_repeticao/ex_13_potenciacao.py @@ -18,3 +18,5 @@ def calcular_potencia(base: int, expoente: int) -> int: """Escreva aqui em baixo a sua solução""" + elevado = base** expoente + print(elevado) \ 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..9a3451254 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,20 @@ 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""" + lista = (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10) + par = 0 + for n in lista: + if n%2 == 0: + par+=1 + print(f"'Existem {par} números pares e {10-par} números impares'") + + + # while numero <= 47 and numero %2 != 0: + # # if numero == 1: + # print(f"'", end='') + # print(f"{numero},", end=' ') + # numero += 2 + # # if numero == 49: + # print (f"{numero}'") + # # if numero > 49: + # break \ 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..c812567f8 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,63 @@ def calcular_serie_de_fibonacci(n: int) -> str: """Escreva aqui em baixo a sua solução""" + + # ultimo = 1 + # penultimo = 1 + # soma = 1 + + # if n == 1: + # print(f"'{n}'") + + # else: + # n -= 1 + # print("'1", end=", ") + # for numero in range(n): + # if numero == n -1: + # print(f"{soma}'", end="") + # else: + # print(f"{soma}", end=", ") + # soma = ultimo + penultimo + # ultimo = penultimo + # penultimo = soma + + + ultimo = 1 + penultimo = 1 + soma = 1 + + if n == 1: + print(f"'{n}'") + + else: + n -= 1 + print("'1", end=", ") + + for numero in range(n): + if numero == n - 1: + print(f"{soma}'", end="") + + else: + print(f"{soma}", end=", ") + soma = ultimo + penultimo + ultimo = penultimo + penultimo = soma + + + + + + + + + + + + + + + + + + + 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..89139d7c7 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 @@ -10,5 +10,24 @@ """ +from turtle import pen + + def calcular_serie_de_fibonacci_ate_valor_ser_maior_que_500() -> str: """Escreva aqui em baixo a sua solução""" + ultimo = 0 + penultimo = 1 + soma = 1 + + while ultimo <= 500: + if ultimo == 0: + print(f"'{ultimo}", end=", ") + if penultimo > 500: + print(f"{penultimo}'", end="") + return + else: + print(f"{soma}", end=", ") + soma = ultimo + penultimo + ultimo = penultimo + penultimo = soma + \ 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..edfe00690 100644 --- a/secao_03_estrutura_de_repeticao/ex_17_fatorial.py +++ b/secao_03_estrutura_de_repeticao/ex_17_fatorial.py @@ -23,3 +23,11 @@ def calcular_fatorial(n: int) -> int: """Escreva aqui em baixo a sua solução""" +# for n in range(1,numero+1): +# resultado *= n + resultado = 1 + count = 1 + while count <= n: + resultado *= count + count += 1 + print(resultado) \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py b/secao_03_estrutura_de_repeticao/ex_18_estatisticas_de_n_numeros.py index 45f349446..a321ff39e 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,14 @@ def calcular_estatisticas(*numeros) -> str: """Escreva aqui em baixo a sua solução""" + if len(numeros) == 0: + print("'Maior valor: não existe. Menor valor: não existe. Soma: 0'") + return + maior = max(numeros) + menor = min(numeros) + soma = 0 + + for n in numeros: + soma +=n + print(f"'Maior valor: {maior}. Menor valor: {menor}. Soma: {soma}'") + \ No newline at end of file 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..90701839b 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,19 @@ def calcular_estatisticas(*numeros) -> str: """Escreva aqui em baixo a sua solução""" + for n in (numeros): + if n > 1000 or n < 0: + print("'Somente números de 0 a 1000 são permitidos'") + return + + if len(numeros) == 0: + print("'Maior valor: não existe. Menor valor: não existe. Soma: 0'") + return + + maior = max(numeros) + menor = min(numeros) + soma = 0 + + for n in numeros: + soma +=n + print(f"'Maior valor: {maior}. Menor valor: {menor}. Soma: {soma}'") \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_20_fatorial_com_limitacao.py b/secao_03_estrutura_de_repeticao/ex_20_fatorial_com_limitacao.py index 641981165..2521c2857 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,13 @@ def calcular_fatorial(n: int) -> int: """Escreva aqui em baixo a sua solução""" + if n > 16 or n < 1 or type(n) == float: + print(f"'Apenas valores positivos, inteiros e menores que 16 são válidos. Não é possível calcular para {n}'") + return + + resultado = 1 + count = 1 + while count <= n: + resultado *= count + count += 1 + print(resultado) \ 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..d93bc7556 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,24 @@ def eh_primo(n: int) -> bool: """Escreva aqui em baixo a sua solução""" + # if n / n == 0 and n % 1 == 0 and n / 2 != 0: + # print(True) + # else: + # print(False) + + # for i in range(2, n+1): + # if n / n == 0 and n % i == 0 and n / 2 != 0: + # print(True) + # else: + # print(False) + + mult=0 + + for i in range(1,n+1): + if (n % i == 0): + mult += 1 + + if mult == 2: + print("True") + else: + print("False") diff --git a/secao_03_estrutura_de_repeticao/ex_22_numero_primo_divisores.py b/secao_03_estrutura_de_repeticao/ex_22_numero_primo_divisores.py index 4fe3d89f1..5921ed1cd 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,18 @@ def eh_primo(n: int) -> bool: """Escreva aqui em baixo a sua solução""" + mult=0 + falso= [] + for i in range(1,n+1): + if (n % i == 0): + mult += 1 + falso.append(i) + if mult == 2: + print(True) + else: + for i in falso: + if i != 1 and i != n: + print(f"É divisível por {i}") + print(False) + + 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..060dec7b4 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,16 @@ def calcular_primos_e_divisoes(n: int) -> Tuple[str, int]: """Escreva aqui em baixo a sua solução""" + mult=0 + falso= [] + for i in range(1,n+1): + if (n % i == 0): + mult += 1 + falso.append(i) + if mult == 2: + print(True) + else: + for i in falso: + if i != 1 and i != n: + print(f"É divisível por {i}") + print(False) \ No newline at end of file diff --git a/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py b/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py index 9cf378f6d..111c02b5b 100644 --- a/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py +++ b/secao_03_estrutura_de_repeticao/ex_24_media_artmetica.py @@ -16,5 +16,37 @@ """ +from statistics import mean + + def calcular_media(*notas) -> float: """Escreva aqui em baixo a sua solução""" + +# A média aritmética é obtida através da soma de todos os valores dentro de conjuntos numéricos e, +# posteriormente, dividindo todos os valores pelo número total de elementos deste conjunto. + # somas = 0 + # media = somas/notas + + + # else: + # for i in notas: + # somas += notas + # if notas == (): + # print("'É necessária ao menos uma nota para calcular a média'") + # else: + # print(mean(notas)) + if notas == (): + print("'É necessária ao menos uma nota para calcular a média'") + + else: + soma = 0 + for i in notas: + soma += i + media = soma / len(notas) + + if media > 2: + print(media) + else: + print(f"{media:.0f}") + + 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..3f5134777 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,21 @@ def classifcar_turma(*idades) -> str: """Escreva aqui em baixo a sua solução""" +# nao sei o numero de idade +# tirar média de idade da turma, com 3 opções + soma = 0 + for i in idades: + soma += i + media = soma / len(idades) + + if media <= 25: + print(f"'A turma é jovem, pois a média é de {media:.1f} anos'") + elif media > 25 and media < 60: + print(f"'A turma é adulta, pois a média é de {media:.1f} anos'") + else: + print(f"'A turma é idosa, pois a média é de {media:.1f} anos'") + + + + + diff --git a/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py b/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py index 95d99b4f8..54d2fe2ad 100644 --- a/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py +++ b/secao_03_estrutura_de_repeticao/ex_26_urna_eletronica.py @@ -34,5 +34,27 @@ """ +from itertools import count + + def calcular_votos(*votos): """Escreva aqui em baixo a sua solução""" + eleitores = 0 + corrupto = 0 + mentiroso = 0 + roba_faz = 0 + for i in votos: + # eleitores += 1 + if i == 'corrupto': + corrupto += 1 + elif i == 'mentiroso': + mentiroso += 1 + else: + roba_faz += 1 + print(f"Votantes: {len(votos)}") + print(f"Votos no candidato corrupto: {votos.count('corrupto')}") + print(f"Votos no candidato mentiroso: {mentiroso}") + print(f"Votos no candidato rouba, mas faz: {roba_faz}") + + + \ 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..c4a60b1d9 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,28 @@ def calcular_media_de_alunos_por_turma(): """Escreva aqui em baixo a sua solução""" + turmas = int(input("digite a quantidade de turmas: ")) + soma = 0 + quantidade_alunos = 0 + print(f'Número de turmas: {turmas}') + for i in range(turmas): + quantidade_alunos = int(input("digite: ")) + while quantidade_alunos < 1 or quantidade_alunos > 40: + print(f"Uma turma deve ter de 1 a 40 alunos, não é possível ter {quantidade_alunos} alunos") + quantidade_alunos = int(input("digite: ")) + else: + soma += quantidade_alunos + media = soma / turmas + print(f'Média de alunos por turma: {media:.0f}') + + # while True: + # alunos = int(input("digite a quantidade de alunos: ")) + # if alunos < 1 or alunos > 40: + # print(f'Uma turma deve ter de 1 a 40 alunos, não é possível ter {alunos} alunos') + # else: + # soma += alunos + # quantidades += 1 + # break + # media = soma / quantidades + # print(f'Número de turmas: {turmas}') + # print(f'Média de alunos por turma: {media:.0f}') \ No newline at end of file diff --git a/secao_06_exercicios_strings/ex_4_nomes_vertical_escada.py b/secao_06_exercicios_strings/ex_4_nomes_vertical_escada.py new file mode 100644 index 000000000..d28c4f831 --- /dev/null +++ b/secao_06_exercicios_strings/ex_4_nomes_vertical_escada.py @@ -0,0 +1,50 @@ +""" +Exercício 04 da seção de exercícios com strings da Python Brasil: +https://wiki.python.org.br/ExerciciosComStrings + +Nome na vertical em escada. Modifique o programa anterior de forma a mostrar o nome em formato de escada. + + >>> nome_escada('Arnold_Schwarzenegger') + A + AR + ARN + ARNO + ARNOL + ARNOLD + ARNOLD_ + ARNOLD_S + ARNOLD_SC + ARNOLD_SCH + ARNOLD_SCHW + ARNOLD_SCHWA + ARNOLD_SCHWAR + ARNOLD_SCHWARZ + ARNOLD_SCHWARZE + ARNOLD_SCHWARZEN + ARNOLD_SCHWARZENE + ARNOLD_SCHWARZENEG + ARNOLD_SCHWARZENEGG + ARNOLD_SCHWARZENEGGE + ARNOLD_SCHWARZENEGGER + + >>> nome_escada('gELO') + G + GE + GEL + GELO + + >>> nome_escada('HeISenBErG') + H + HE + HEI + HEIS + HEISE + HEISEN + HEISENB + HEISENBE + HEISENBER + HEISENBERG +""" +def nome_escada(nome:str): + """Escreva aqui em baixo a sua solução""" + \ No newline at end of file