1
resposta

[Projeto] Desafio: hora da prática

  1. lista = [16, 14, 63, 65, 17, 99, 70, 11, 20, 48, 79, 32, 17, 89, 12, 25, 66]

tam = len(lista)
maior = max(lista)
menor = min(lista)
soma = sum(lista)

print(f"A lista possui {tam} números em que o maior número é {maior} e o menor número é {menor}. A soma dos valores presentes nela é igual a {soma}")

  1. tabuada = int(input("Digite qual tabuada você quer gerar: "))
    operacao = input("Digite a operação que você quer realizar: ")

for i in range(11):
if operacao == "+":
print(f"{tabuada} + {i} = {tabuada + i}")
elif operacao == "-":
print(f"{tabuada} - {i} = {tabuada - i}")
elif operacao == "*":
print(f"{tabuada} * {i} = {tabuada * i}")
elif operacao == "/":
print(f"{tabuada} / {i} = {tabuada / i}")
else:
print(f"Operação matemática não disponível!")
break

  1. lista = [97, 80, 94, 88, 80, 1, 16, 53, 62, 32, 24, 99]

mult_3 = list(filter(lambda x: x % 3 == 0, lista))

print(mult_3)

  1. lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

quadrado = list(map(lambda x: x ** 2, lista))

print(quadrado)

  1. notas = []
    for i in range(5):
    nota = float(input("Digite a {i+1}ª nota: "))
    notas.append(nota)

notas.remove(min(notas))
notas.remove(max(notas))
media = sum(notas) / len(notas)

print(f"A média das notas é igual a {media:.2f}")

  1. notas = []
    for i in range(4):
    nota = float(input("Digite a {i+1}ª nota: "))
    notas.append(nota)

maior = max(notas)
menor = min(notas)
media = sum(notas) / len(notas)

if media >= 7:
situacao = "Aprovado(a)"
else:
situacao = "Reprovado(a)"

print(f"O(a) estudante obteve uma média de {media}, com a sua maior nota de {maior} pontos e a menor nota de {menor} pontos e foi {situacao}")

  1. nomes = ["joão", "MaRia", "JOSÉ"]
    sobrenomes = ["SILVA", "souza", "Tavares"]

nomes_completos = list(map(lambda x, y: x.capitalize() + " " + y.capitalize(), nomes, sobrenomes))

for nome in nomes_completos:
print(f"Nome Completo: {nome}")

  1. gols_marcados = [2, 1, 3, 1, 0]
    gols_sofridos = [1, 2, 2, 1, 3]

def calcula_pontos (m, s) -> int:
pontuacao = 0
for i in range(len(gols_marcados)):
if gols_marcados[i] > gols_sofridos[i]:
pontuacao += 3
elif gols_marcados[i] == gols_sofridos[i]:
pontuacao += 1
return pontuacao

pontos = calcula_pontos(gols_marcados, gols_sofridos)
aprov = pontos / (len(gols_marcados) * 3) * 100

print(f"A pontuação do time foi de {pontos} e seu aproveitamento foi de {aprov}%")

  1. def gasto_hotel(dias):
    return dias * 150

def gasto_gasolina(distancia):
consumo_carro = 14 # km por litro
valor_gasolina = 5 # reais por litro

litros_gastos = distancia / consumo_carro
return litros_gastos * valor_gasolina

def gasto_passeio(dias, valor_passeio):
return dias * valor_passeio

Dados das cidades

cidades = ["Salvador", "Fortaleza", "Natal", "Aracaju"]
distancias = [850, 800, 300, 550]
passeios = [200, 400, 250, 300]

Simulação: 3 dias em Salvador

dias = 3
cidade = cidades[0]

Ida e volta

distancia_total = distancias[0] * 2

Cálculos

hotel = gasto_hotel(dias)
gasolina = gasto_gasolina(distancia_total)
passeio = gasto_passeio(dias, passeios[0])

total = hotel + gasolina + passeio

print(f"Com base nos gastos definidos, uma viagem de {dias} dias para {cidade} saindo de Recife custará R$ {total:.2f}")

  1. frase = "Aprender Python, aqui na Alura, é muito bom!"

Tratando a frase

frase = frase.replace(",", " ")
.replace(".", " ")
.replace("!", " ")
.replace("?", " ")

Separando as palavras

palavras = frase.split()

Filtrando palavras com 5 ou mais caracteres

palavras_filtradas = list(filter(lambda palavra: len(palavra) >= 5, palavras))

print(palavras_filtradas)

1 resposta

Olá, Paulo Anderson! Como vai?

Uau, que entrega completa! Você passou por diversos conceitos essenciais de Python para Dados, desde o básico de listas e loops até o uso de funções anônimas (lambda) e tratamento de strings.

Gostaria de destacar alguns pontos técnicos excelentes na sua resolução:

1. Poder das Funções Built-in

O seu primeiro exercício resume bem a eficiência do Python. Em vez de criar laços complexos para descobrir o maior ou o menor valor, você utilizou max(), min(), len() e sum(). Isso é o que chamamos de código "Pythônico": simples, legível e direto ao ponto.

2. Programação Funcional (map e filter)

Você mandou muito bem ao utilizar map() e filter() com lambda.

  • No exemplo dos nomes, o uso do .capitalize() foi uma sacada ótima para padronizar dados (limpeza de dados é 80% do trabalho em Data Science!).
  • O uso de filter() para encontrar múltiplos de 3 mostra como você já consegue manipular coleções de forma elegante sem precisar de múltiplos ifs dentro de um for.

3. Modularização com Funções

No exercício da viagem e dos pontos de futebol, você criou funções com responsabilidades claras (calcula_pontos, gasto_hotel, etc). Isso facilita muito a manutenção do código. Se o preço da gasolina mudar, você só altera em um lugar!


Dicas para Refinar seu Código

Como você está avançando rápido, deixo aqui três toques para deixar seus scripts ainda mais profissionais:

  • Tratamento de Strings em Massa: No exercício da frase, você usou vários .replace(). Uma forma bem comum em ciência de dados para limpar pontuações é usar uma biblioteca chamada string:
import string
# Remove toda a pontuação de uma vez
frase_limpa = frase.translate(str.maketrans('', '', string.punctuation))
  • Atenção aos F-Strings com Variáveis: No seu loop de notas, notei que você escreveu input("Digite a {i+1}ª nota: "). Para que o Python calcule o valor de i+1 dentro do texto, você precisa colocar o f antes das aspas: f"Digite a {i+1}ª nota: ".
  • Divisão por Zero: No exercício da tabuada, ao realizar a operação de "/", lembre-se que se o i for 0, o Python retornará um erro (ZeroDivisionError). É sempre bom colocar uma verificação rápida antes de dividir.

Parabéns pelo fôlego em resolver todos os desafios de uma vez! Você está construindo uma base de lógica e sintaxe muito forte para trabalhar com análise de dados.

Espero que possa ter lhe ajudado!

Dos conceitos que você praticou aqui (loops, funções, lambdas), qual deles você achou mais desafiador de aplicar na lógica do problema?