1
resposta

Desafio: hora da prática

Aquecimento

Q1

lista = [16, 14, 63, 65, 17, 99, 70, 11, 20, 48, 79, 32, 17, 89, 12, 25, 66]
tamanho = len(lista)
maior = max(lista)
menor = min(lista)
soma = sum(lista)

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

Q2

def tabuada(numero):
print(f"Tabuada do {numero}:")
for i in range(11):
print(f"{numero} x {i} = {numero * i}")

numero = int(input("Digite um número: "))
tabuada(numero)

Q3

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

def mult_3(lista):
lista_mult_3 =[]
for i in lista:
if i % 3 == 0:
lista_mult_3.append(i)
return lista_mult_3

mult_3(lista)
print(mult_3(lista))

Q4

lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
map_lista = map(lambda x: x**2, lista)
print(list(map_lista))

Aplicando a projetos

Q5

nota_1 = float(input("Digite a primeira nota: "))
nota_2 = float(input("Digite a segunda nota: "))
nota_3 = float(input("Digite a terceira nota: "))
nota_4 = float(input("Digite a quarta nota: "))
nota_5 = float(input("Digite a quinta nota: "))

lista_notas = [nota_1, nota_2, nota_3, nota_4, nota_5]
max_nota = max(lista_notas)
min_nota = min(lista_notas)
lista_notas.remove(max_nota)
lista_notas.remove(min_nota)
media = sum(lista_notas) / len(lista_notas)

print(f"Nota da manobra: {round(media,1)}")

Q6

nota_1 = float(input("Digite a primeira nota: "))
nota_2 = float(input("Digite a segunda nota: "))
nota_3 = float(input("Digite a terceira nota: "))
nota_4 = float(input("Digite a quarta nota: "))

lista_notas = [nota_1, nota_2, nota_3, nota_4]

def situacao(lista: list):
maior_nota = max(lista)
menor_nota = min(lista)
media = sum(lista)/len(lista)
if media >= 6:
situacao = "Aprovado(a)"
else:
situacao = "Reprovado(a)"
return maior_nota, menor_nota, media, situacao

maior_nota, menor_nota, media, situacao = situacao(lista_notas)

print(f"A maior nota é {maior_nota}, a menor nota é {menor_nota}, a média é {round(media,1)} e a situação é {situacao}")

Q7

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

nomes_tratados = list(map(lambda x: x.capitalize(), nomes))
sobrenomes_tratados = list(map(lambda x: x.capitalize(), sobrenomes))

nomes_completos = list(map(lambda n, s: f'Nome completo: {n} {s}',nomes_tratados,sobrenomes_tratados))

for nome in nomes_completos:
print(nome)

Q8

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

def calcula_pontos(gols_marcados, gols_sofridos):
pontuacao = 0

for marcados, sofridos in zip(gols_marcados, gols_sofridos):
if marcados > sofridos:
pontuacao+=3
elif marcados == sofridos:
pontuacao+=1

aproveitamento = pontuacao/(len(gols_marcados)*3)*100

return aproveitamento, pontuacao

aproveitamento, pontuacao = calcula_pontos(gols_marcados, gols_sofridos)
print(f"A pontuação do time foi de {pontuacao} e seu aproveitamento foi de {aproveitamento}%")

Q9

cidades = ['Salvador', 'Fortaleza', 'Natal', 'Aracaju']
gastos_alimentacao_passeios = [200, 400, 250, 300]
distancia_recife = [850, 800, 300, 550]

def gasto_hotel(dias):
return 150 * dias

def gasto_gasolina(distancia):
litros_gastos = ((distancia * 2) / 14) * 5
return litros_gastos

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

dias = 3

zip_completo = zip(cidades, gastos_alimentacao_passeios, distancia_recife)

for cidade, passeio, distancia in zip_completo:
hotel = gasto_hotel(dias)
gasolina = gasto_gasolina(distancia)
passeio_total = gasto_passeio(passeio, dias)
gasto_total = hotel + gasolina + passeio_total

print(f'Uma viagem de {dias} dias para {cidade} saindo de Recife custaria R${gasto_total:.2f}')

Q10

frase = input('Digite uma frase:')
frase.replace(',', ' ')
frase.replace('.', ' ')
frase.replace('!', ' ')
frase.replace('?', ' ')
frase = frase.split()

lista_5_caracteres = list(filter(lambda x: len(x) >= 5, frase))
print(lista_5_caracteres)

1 resposta

Olá, Rafaela. Como vai?

Uau, que excelente entrega! Você resolveu uma lista massiva de 10 exercícios cobrindo tópicos complexos e essenciais para a análise de dados com Python, como funções built-in (max, min, sum), funções anônimas (lambda), mapeamento e filtragem de dados (map e filter), iteração múltipla com zip e manipulação de strings. A sua lógica em todas as resoluções está perfeitamente correta.

Como você postou os códigos em bloco, existem alguns detalhes específicos da sintaxe do Python e de boas práticas de mercado que valem a pena revisarmos juntas para evitar bugs quando você rodar esses scripts na sua máquina.


1. Atenção à Indentação Obrigatória (Q2, Q3, Q6)

Assim como comentei com outros colegas no fórum, o Python exige o recuo (indentação de 4 espaços ou 1 Tab) para entender o que está dentro de uma função ou de um laço for. Sem isso, o interpretador vai disparar um IndentationError.

Por exemplo, na sua Q2, o bloco deve ficar assim:

def tabuada(numero):
    print(f"Tabuada do {numero}:")
    for i in range(11):
        print(f"{numero} x {i} = {numero * i}")

2. O comportamento do .replace() em Strings (Q10)

Na sua resolução da Q10, você fez um ótimo mapeamento das pontuações que precisavam ser limpas. Contudo, em Python, as strings são imutáveis. Isso significa que métodos como o .replace() não alteram a variável original diretamente; eles apenas retornam o texto modificado.

Do jeito que está escrito, as substituições são descartadas e os pontos continuam na frase. Para corrigir, você precisa reatribuir o resultado de volta à variável:

frase = input('Digite uma frase: ')
# É necessário salvar o resultado de volta na variável
frase = frase.replace(',', ' ').replace('.', ' ').replace('!', ' ').replace('?', ' ')
frase = frase.split()

3. Evite Variáveis com o mesmo nome da Função (Q6)

Na Q6, dentro da função situacao(), você criou uma variável de texto chamada situacao = "Aprovado(a)".

Embora o Python consiga processar isso, dar o mesmo nome para uma variável e para a função onde ela reside pode confundir a sua leitura (e a de outros desenvolvedores) no futuro. Uma boa prática é mudar o nome da variável interna para algo como status_aluno ou resultado.

4. Chamadas Duplicadas de Funções (Q3)

Na sua Q3, você escreveu no final:

mult_3(lista)         # Executa a função, mas joga o resultado fora
print(mult_3(lista))  # Executa a função de novo e imprime o resultado

Como a sua função apenas processa os dados e retorna a lista, a primeira linha roda o processamento à toa na memória. Você pode apagá-la e deixar apenas a linha do print(mult_3(lista)).


Pontos de Grande Destaque no seu Código

  • Uso brilhante do zip() (Q8 e Q9): Unir as listas de gols marcados/sofridos e os dados de viagem das cidades usando o zip foi a escolha mais elegante e pythônica possível. É exatamente assim que economizamos código em Data Science.
  • Uso maduro do map() e lambda (Q7): Tratar os nomes com .capitalize() e depois concatenar com os sobrenomes usando múltiplos argumentos no map() foi uma solução de nível avançado impressionante.
  • Regra de Negócio com Remoção (Q5): A sua estratégia de usar .remove(max_nota) e .remove(min_nota) para limpar as notas extremas antes de calcular a média foi muito inteligente e direta ao ponto.

A sua lista mostra que você superou o aquecimento e já está dominando a manipulação de estruturas de dados para projetos reais. Continue com esse foco incrível!

Espero que possa ter lhe ajudado!