Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

Aula 3 - Desafio: hora da prática

# 1. Crie um código para imprimir a soma dos elementos de cada uma das listas contidas na seguinte lista:
lista_de_listas = [[4, 6, 5, 9], [1, 0, 7, 2], [3, 4, 1, 8]]

for lista in lista_de_listas:
    print(f"A soma dos elementos da lista {lista} é: {sum(lista)}")

# 2. Crie um código para gerar uma lista que armazena o terceiro elemento de cada tupla contida na seguinte lista de tuplas:
lista_de_tuplas = [('Pedro', 1.74, 81), ('Júlia', 1.65, 67), ('Otávio', 1.81, 83)]

terceiros_elementos = [tupla[2] for tupla in lista_de_tuplas]
print(f"Terceiros elementos: {terceiros_elementos}")

# 3. Crie um código para gerar uma lista de tuplas em que cada tupla tenha a posição do nome e o próprio nome:
lista = ['Pedro', 'Júlia', 'Otávio', 'Eduardo']

lista_posicoes = list(enumerate(lista))
print(f"Lista de tuplas (posição, nome): {lista_posicoes}")

# 4. Crie uma lista usando list comprehension que armazena somente o valor numérico de cada tupla caso o primeiro elemento seja 'Apartamento':
aluguel = [('Apartamento', 1700), ('Apartamento', 1400), ('Casa', 2150), ('Apartamento', 1900), ('Casa', 1100)]

valores_apartamentos = [valor for tipo, valor in aluguel if tipo == 'Apartamento']
print(f"Valores dos apartamentos: {valores_apartamentos}")

# 5. Crie um dicionário usando dict comprehension ligando os meses às suas respectivas despesas:
meses = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
despesa = [860, 490, 1010, 780, 900, 630, 590, 770, 620, 560, 840, 360]

dicionario_despesas = {meses[i]: despesa[i] for i in range(len(meses))}
print(f"Dicionário de despesas: {dicionario_despesas}")

# 6. Crie uma lista usando list comprehension para filtrar os valores de 2022 e que sejam maiores que 6000:
vendas = [('2023', 4093), ('2021', 4320), ('2021', 5959), ('2022', 8883), ('2023', 9859), ('2022', 5141), ('2022', 7688), ('2022', 9544), ('2023', 4794), ('2021', 7178), ('2022', 3030), ('2021', 7471), ('2022', 4226), ('2022', 8190), ('2021', 9680), ('2022', 5616)]

vendas_filtradas = [valor for ano, valor in vendas if ano == '2022' and valor > 6000]
print(f"Vendas de 2022 acima de 6000: {vendas_filtradas}")

# 7. Crie uma lista de tuplas usando list comprehension contendo o rótulo e o valor da glicemia de acordo com as regras de saúde:
glicemia = [129, 82, 60, 97, 101, 65, 62, 167, 87, 53, 58, 92, 66, 120, 109, 62, 86, 96, 103, 88, 155, 52, 89, 73]

rotulos_glicemia = [
    ('Hipoglicemia', valor) if valor <= 70 else
    ('Normal', valor) if valor <= 99 else
    ('Alterada', valor) if valor <= 125 else
    ('Diabetes', valor)
    for valor in glicemia
]
print(f"Rótulos de glicemia: {rotulos_glicemia}")

# 8. Crie uma lista de tuplas em que cada tupla tenha id, quantidade, preço e valor total, contendo o cabeçalho na primeira linha:
id = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
quantidade = [15, 12, 1, 15, 2, 11, 2, 12, 2, 4]
preco = [93.0, 102.0, 18.0, 41.0, 122.0, 14.0, 71.0, 48.0, 14.0, 144.0]

tabela_vendas = [('id', 'quantidade', 'preco', 'total')] + [
    (id[i], quantidade[i], preco[i], quantidade[i] * preco[i]) for i in range(len(id))
]
print("Tabela estruturada:")
for linha in tabela_vendas:
    print(linha)

# 9. Crie um dicionário usando dict comprehension contendo a contagem de filiais por Estado:
estados = ['SP', 'ES', 'MG', 'MG', 'SP', 'MG', 'ES', 'ES', 'ES', 'SP', 'SP', 'MG', 'ES', 'SP', 'RJ', 'MG', 'RJ', 'SP', 'MG', 'SP', 'ES', 'SP', 'MG']

contagem_estados = {estado: estados.count(estado) for estado in set(estados)}
print(f"Quantidade de filiais por estado: {contagem_estados}")

# 10. Agrupe o número de colaboradores por estado em listas e depois calcule a soma total por estado:
funcionarios = [('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), ('MG', 4), ('ES',9), ('ES', 7), ('ES', 12), ('SP', 7), ('SP', 11), ('MG',8), ('ES',8), ('SP',9), ('RJ', 13), ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), ('ES', 14), ('SP', 10), ('MG', 12)]

# Dicionário mapeando os estados únicos para suas respectivas listas de funcionários
agrupamento_funcionarios = {estado: [f[1] for f in funcionarios if f[0] == estado] for estado in set([f[0] for f in funcionarios])}

# Dicionário com a soma de colaboradores por estado
soma_funcionarios = {estado: sum(lista_func) for estado, lista_func in agrupamento_funcionarios.items()}

print(f"Agrupamento de listas por estado: {agrupamento_funcionarios}")
print(f"Soma de colaboradores por estado: {soma_funcionarios}")
1 resposta
solução!

Olá, Julia! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o list comprehension para filtrar dados com Python, utilizou muito bem o dict comprehension para estruturar informações e ainda compreendeu a importância da enumeração para organizar listas.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Uma dica interessante para o futuro é aplicar condicionais diretamente em compreensões de lista. Assim:

valores_filtrados = [valor for valor in range(20) if valor % 2 == 0]
print(valores_filtrados)

Isso gera apenas os números pares de 0 a 19.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Eficiência: prefira compreensões a loops quando possível.
  • Organização: utilize dicionários para relacionar dados de forma clara.
  • Legibilidade: mantenha compreensões simples para facilitar a leitura.

Ah, uma pergunta: você prefere resolver desafios de programação com list comprehension pela praticidade ou com loops tradicionais pela clareza do passo a passo?

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!