Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Desafio

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}')

a = int(input('Insira um número de 1 a 10 para gerar a tabualada:'))
for i in range(0,11):
mult=a*i
print(f'{a} x {i} = {mult}')

lista2 = [97, 80, 94, 88, 80, 1, 16, 53, 62, 32, 24, 99]
mult_3=[]
def multiplo3(lista):
for i in lista2:
if i%3 == 0:
mult_3.append(i)
return mult_3
mult_3=multiplo3(lista2)

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

notas=[]
for i in range(0,5):
n = float(input('Insira sua nota:'))
notas.append(n)
notas.remove(max(notas))
notas.remove(min(notas))
media = sum(notas) / len(notas)
print(f"Nota da manobra: {media:.2f}")

notas1=[]
for i in range(0,4):
n = float(input('Insira a nota:'))
notas1.append(n)
media=sum(notas1)/len(notas1)
maior=max(notas1)
menor=min(notas1)
if media>=5:
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}')

nomes = ["joão", "MaRia", "JOSÉ"]
sobrenomes = ["SILVA", "souza", "Tavares"]
comp=list(map(lambda x,y: x.capitalize()+" "+y.capitalize(), nomes, sobrenomes ))
print(f"Os nomes completos são: {comp[0]}, {comp[1]}, {comp[2]}")

gols_marcados = [2, 1, 3, 1, 0]
gols_sofridos = [1, 2, 2, 1, 3]
def calcula_pontos(l1, l2):
pontos=0
ponto_max=3*len(l1)
for i in range(len(l1)):
if l1[i]>l2[i]:
pontos=pontos+3
elif l1[1]==l2[i]:
pontos=pontos+1
else: pontos=pontos
aproveitamento = (pontos/ponto_max)*100
return pontos, round(aproveitamento,2)
pontos, aprov = calcula_pontos(gols_marcados, gols_sofridos)
print(f"A pontuação do time foi de {pontos} e seu aproveitamento foi de {aprov}%")

gastos = [200, 400, 250, 300]
distancia=[850, 800, 300, 550]
cidades=["Salvador", "Fortaleza", "Natal", "Aracaju"]
def gasto_hotel(diarias):
return round(diarias*150,2)

def gasto_gasolina(cidade):
i=cidades.index(cidade)
return round((distancia[i]/14)52,2)

def gasto_passeio(cidade, diarias):
i=cidades.index(cidade)
return (gastos[i]*diarias)

diarias = int(input("Insira o número de diárias: "))
cidade=str(input("Insira o destino: ")).capitalize()
hotel=gasto_hotel(diarias)
gasolina=gasto_gasolina(cidade)
passeio=gasto_passeio(cidade,diarias)
gastos=round(hotel+gasolina+passeio,2)
print(f"Com base nos gastos definidos, uma viagem de {diarias} dias para {cidade} saindo de Recife custaria {gastos} reais")

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

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

1 resposta

Olá, Vanessa. Como vai?

Parabéns por enfrentar e resolver toda a lista de desafios! É muito gratificante ver a evolução no uso de estruturas de dados, funções built-in como map, filter e o uso de funções lambda. Seu raciocínio lógico está afiadíssimo.

Analisei os seus códigos e notei que a maioria deles cumpre perfeitamente o papel proposto. Para te ajudar a fixar ainda mais o conhecimento e evitar pequenos comportamentos inesperados no Python, separei alguns pontos de atenção e melhorias práticas que vão deixar seu código ainda mais profissional:

1. Indentação e Variáveis Internas nas Funções
No desafio dos múltiplos de 3, sua função está acessando e alterando uma variável que foi criada fora dela (lista2 e mult_3). Além disso, lembre-se de que no Python a indentação é obrigatória para o código funcionar.

Uma boa prática é fazer a função trabalhar apenas com os dados que ela recebe como parâmetro (lista), mantendo o escopo limpo:

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

def multiplo3(lista):
    mult_3 = [] # Criada dentro da função para isolar o escopo
    for i in lista: # Usando o parâmetro 'lista' recebido
        if i % 3 == 0:
            mult_3.append(i)
    return mult_3

resultado = multiplo3(lista2)

**2. Cuidado ao remover itens com min() e max()**
No exercício da nota da manobra (onde você elimina a maior e a menor nota), o uso do .remove() funciona bem se não houver notas repetidas que sejam as extremas. Caso a lista tivesse duas notas 10, por exemplo, apenas um 10 seria removido. O seu raciocínio lógico foi ótimo, e uma alternativa bem comum para esse tipo de problema na ciência de dados é ordenar a lista com .sort() e usar o fatiamento (slicing):

# Remove o primeiro (menor) e o último (maior) elemento de uma lista ordenada
notas_validas = sorted(notas)[1:-1]

**3. Pequeno detalhe na função calcula_pontos**
No bloco do elif, houve um pequeno erro de digitação no índice: você escreveu l1[1] == l2[i] (com o número 1 fixo) em vez de l1[i] == l2[i]. Corrigindo isso, a verificação de empate funcionará perfeitamente para todas as rodadas!

elif l1[i] == l2[i]:
    pontos = pontos + 1

**4. Operador na função gasto_gasolina**
Na linha do cálculo da gasolina, o operador multiplicador ficou faltando antes do número 52: (distancia[i]/14)52. Em Python, precisamos colocar o asterisco explicitamente: (distancia[i] / 14) * 52.

Suas implementações com map e lambda para formatar os nomes e calcular os quadrados ficaram excelentes, bem diretas e elegantes! Continue praticando essa escrita de código limpo.

Espero que possa ter lhe ajudado!