5
respostas

Desafio: hora da prática

EM CONSTRUÇÃO:

Aquecendo na programação:

1. Faça um programa que tenha a seguinte lista contendo os valores de gastos de uma empresa de papel [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]. Com esses valores, faça um programa que calcule a média de gastos. Dica: use as funções built-in sum() e len().

# Lista de gastos:

Gastos = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]

# Cálculo da média:

media = sum(Gastos) / len(Gastos)

# Resultado:

print(f'A média de gastos da empresa é: R$ {media:.2f}')

A média de gastos da empresa é: R$ 3144.22

2. Com os mesmos dados da questão anterior, defina quantas compras foram realizadas acima de 3000 reais e calcule a porcentagem quanto ao total de compras.

# Lista de compras:

compras = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]

# Filtragem de compras acima de R$ 3.000,00:

compras_acima_3000 = [valor for valor in compras if valor > 3000]

# Quantidade de compras acima de R$ 3.000,00:

quantidade_acima_3000 = len(compras_acima_3000)

# Total de compras:

total_compras = len(compras)

# Porcentagem de compras acima de R$ 3.000,00:

porcentagem_acima_3000 = (quantidade_acima_3000 / total_compras) * 100

# Exibição de resultados:

print(f'O valor total de compras é de: R$ {total_compras}.')
print (f'A quantidade de compras acima de R$ 3.000,00 foi de: {quantidade_acima_3000} itens.')
print (f'A porcentagem quanto ao total de compras é de {porcentagem_acima_3000:.2f}%')

O valor total de compras é de: R$ 10.
A quantidade de compras acima de R$ 3.000,00 foi de: 7 itens.
A porcentagem quanto ao total de compras é de 70.00%

3. Faça um código que colete em uma lista 5 números inteiros quaisquer e imprima a lista. Exemplo: [1,4,7,2,4].

# Criação de uma lista vazia:

numeros = []

# Laço:

for i in range(5):

  numero = int(input(f'Digite o {i+1}º número inteiro: '))
  numeros.append(numero)

# Exibição da lista:

print(f'A lista de números inteiros formada é: {numeros}')

Digite o 1º número inteiro: 9
Digite o 2º número inteiro: 8
Digite o 3º número inteiro: 12
Digite o 4º número inteiro: 29
Digite o 5º número inteiro: 7
A lista de números inteiros formada é: [9, 8, 12, 29, 7]

4. Colete novamente 5 inteiros e imprima a lista em ordem inversa à enviada.

# Criação de uma lista vazia:

numeros = []

# Laço:

for i in range(5):

  numero = int(input(f'Digite o {i+1}º número inteiro: '))
  numeros.append(numero)

# Exibição da lista original:

print(f'A lista de números inteiros formada é: {numeros}')

# Exibição da lista inversa:

print(f'A lista de números inteiros formada em ordem inversa é: {numeros[::-1]}')

Digite o 1º número inteiro: 2
Digite o 2º número inteiro: 49
Digite o 3º número inteiro: 15
Digite o 4º número inteiro: 27
Digite o 5º número inteiro: 72
A lista de números inteiros formada é: [2, 49, 15, 27, 72]
A lista de números inteiros formada em ordem inversa é: [72, 27, 15, 49, 2]

5. Faça um programa que, ao inserir um número qualquer, cria uma lista contendo todos os números primos entre 1 e o número digitado.


def numero_e_primo(numero):
  if numero <2:
    return False
  for i in range(2, int(numero**0.5) + 1):
    if numero % i == 0:
      return False
  return True

def primos_ate_numero(numero):
  primos = []
  for i in range(1, numero + 1):
   if numero_e_primo(i):
       primos.append(i)
  return primos

# Programa principal
numero = int(input("Digite um número: "))
primos = primos_ate_numero(numero)
print(f'Números primos entre 1 e {numero}: {primos}')

Digite um número: 289
Números primos entre 1 e 289: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283]

Continua...

5 respostas

Olá, Andressa! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou a list comprehension para filtrar valores com Python, utilizou muito bem a função sum() para calcular a média e ainda compreendeu a importância da função len() para determinar o total de elementos.

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 a função statistics.mean(). Assim:

import statistics

media = statistics.mean(Gastos)
print(f'A média de gastos da empresa é: R$ {media:.2f}')

Isso faz o cálculo da média de forma direta e sem precisar dividir manualmente a soma pelo total de elementos.

Conteúdos relacionados

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

Oi, Daniel!

Agradeço pelo feedback!

Estou resolvendo os exercícios desta lista aos poucos. Confesso que toda vez que vocês sugerem uma nova função, fico confusa, porque sou pouco familiarizada com Phyton.

Continuação:

6. Escreva um programa que peça uma data informando o dia, mês e ano e determine se ela é válida para uma análise.

def data_valida(dia, mes, ano):
    # Meses com 31 dias:
    if mes in [1, 3, 5, 7, 8, 10, 12]:
        return 1 <= dia <= 31
    # Meses com 30 dias:
    elif mes in [4, 6, 9, 11]:
        return 1 <= dia <= 30
    # Mês de fevereiro:
    elif mes == 2:
        # Verificação de ano bissexto:
        bissexto = (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0)
        if bissexto:
            return 1 <= dia <= 29
        else:
            return 1 <= dia <= 28
    else:
        return False

# Programa principal:
while True:
    dia = int(input('Informe o dia: '))
    mes = int(input('Informe o mês: '))
    ano = int(input('Informe o ano: '))

    if data_valida(dia, mes, ano):
        print(f'A data {dia:02d}/{mes:02d}/{ano} é válida.')
        break  # Sai do loop quando a data for válida
    else:
        print(f'A data {dia:02d}/{mes:02d}/{ano} é inválida. Tente novamente!\n')
        
Informe o dia: 29
Informe o mês: 2
Informe o ano: 2026
A data 29/02/2026 é inválida. Tente novamente!

Informe o dia: 28
Informe o mês: 2
Informe o ano: 2026
A data 28/02/2026 é válida.

Momento dos projetos:

7. Para um estudo envolvendo o nível de multiplicação de bactérias em uma colônia, foi coletado o número de bactérias por dia (em milhares) e pode ser observado a seguir: [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]. Tendo esses valores, faça um código que gere uma lista contendo o percentual de crescimento de bactérias por dia, comparando o número de bactérias em cada dia com o número de bactérias do dia anterior. Dica: para calcular o percentual de crescimento usamos a seguinte equação: 100 * (amostra_atual - amostra_passada) / (amostra_passada).

# Listagem com o número de bactérias por dia (em milhares):
bacterias = [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]

# Listagem para armazenar os percentuais de crescimento>
crescimentos = []

# Loop para calcular o crescimento percentual em relação ao dia anterior:
for i in range(1, len(bacterias)):
    crescimento = 100 * (bacterias[i] - bacterias[i-1]) / bacterias[i-1]
    crescimentos.append(round(crescimento, 2))  

# Exibição de resultados:
print(f'Percentual de crescimento por dia:')
print(crescimentos)

Percentual de crescimento por dia:
[75.0, 57.14, 51.52, 56.0, 44.87, 46.9, 51.2, 50.6, 50.53]

8. Para uma seleção de produtos alimentícios, precisamos separar o conjunto de IDs dados por números inteiros sabendo que os produtos com ID par são doces e os com ID ímpar são amargos. Monte um código que colete 10 IDs. Depois, calcule e mostre a quantidade de produtos doces e amargos.

Digite o ID do produto 1: 1
Digite o nome do produto 1: café
Digite o ID do produto 2: 3
Digite o nome do produto 2: chá mate
Digite o ID do produto 3: 5
Digite o nome do produto 3: chocolate amargo
Digite o ID do produto 4: 2
Digite o nome do produto 4: açúcar
Digite o ID do produto 5: 15
Digite o nome do produto 5: coentro
Digite o ID do produto 6: 10
Digite o nome do produto 6: baunilha
Digite o ID do produto 7: 21
Digite o nome do produto 7: alcachofra
Digite o ID do produto 8: 8
Digite o nome do produto 8: tâmaras
Digite o ID do produto 9: 17
Digite o nome do produto 9: nozes
Digite o ID do produto 10: 6
Digite o nome do produto 10: goma de mascar
Resumo da seleção:
Quantidade de produtos doces: 4
- açúcar (ID 2)
- baunilha (ID 10)
- tâmaras (ID 8)
- goma de mascar (ID 6)
Quantidade de produtos amargos: 6
- café (ID 1)
- chá mate (ID 3)
- chocolate amargo (ID 5)
- coentro (ID 15)
- alcachofra (ID 21)
- nozes (ID 17)

Continua...

Continuação:

9. Desenvolva um programa que informa a nota de um(a) aluno(a) de acordo com suas respostas. Ele deve pedir a resposta desse(a) aluno(a) para cada questão e é preciso verificar se a resposta foi igual ao gabarito. Cada questão vale um ponto e existem as alternativas A, B, C ou D.

# Gabarito da prova:
gabarito = {
    1: "D",
    2: "A",
    3: "C",
    4: "B",
    5: "A",
    6: "D",
    7: "C",
    8: "C",
    9: "A",
    10: "B"
}

# Solicitação de nome ou matrícula:
aluno = input(f' Digite a matrícula do aluno: ')

# Inicialização da pontuação:
pontuacao = 0

print(f'Prova com 10 questões (A, B, C ou D)')

# Loop para cada questão:
for questao in range(1, 11):
    resposta = input(f'Digite a resposta da questão {questao}: ').strip().upper()
    
    # Verificação da resposta está correta:
    if resposta == gabarito[questao]:
        pontuacao += 1

# Exibição da nota final com identificação do aluno:
print(f' Matrícula: {aluno}')
print(f'Nota final: {pontuacao} de 10.')

 Digite a matrícula do aluno: 15148
Prova com 10 questões (A, B, C ou D)
Digite a resposta da questão 1: A
Digite a resposta da questão 2: C
Digite a resposta da questão 3: A
Digite a resposta da questão 4: B
Digite a resposta da questão 5: D
Digite a resposta da questão 6: A
Digite a resposta da questão 7: A
Digite a resposta da questão 8: C
Digite a resposta da questão 9: C
Digite a resposta da questão 10: B
 Matrícula: 15148
Nota final: 3 de 10.

10. Um instituto de meteorologia deseja fazer um estudo de temperatura média de cada mês do ano. Para isso, você precisa fazer um código que colete e armazene essas temperaturas médias em uma lista. Depois, calcule a média anual das temperaturas e mostre todas as temperaturas acima da média anual e em que mês elas ocorreram, mostrando os meses por extenso (Janeiro, Fevereiro, etc.).

# Listagem dos meses:
meses = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
         "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]

# Listagem para armazenar as temperaturas médias de cada mês:
temperaturas = []

# Coleta das temperaturas:
for i in range(12):
    temp = float(input(f'Digite a temperatura média de {meses[i]}: '))
    temperaturas.append(temp)

# Cálculo da média anual:
media_anual = sum(temperaturas) / len(temperaturas)

print("RESULTADOS:")
print(f'Média anual das temperaturas: {media_anual:.2f}°C')

# Exibição das temperaturas acima da média anual:
print(f'Meses com temperatura acima da média anual:')
for i in range(12):
    if temperaturas[i] > media_anual:
        print(f'{meses[i]}: {temperaturas[i]:.2f}°C')

Digite a temperatura média de Janeiro: 28.5
Digite a temperatura média de Fevereiro: 26.3
Digite a temperatura média de Março: 22.7
Digite a temperatura média de Abril: 22.4
Digite a temperatura média de Maio: 19.7
Digite a temperatura média de Junho: 19.1
Digite a temperatura média de Julho: 18.3
Digite a temperatura média de Agosto: 18.1
Digite a temperatura média de Setembro: 20.9
Digite a temperatura média de Outubro: 22.1
Digite a temperatura média de Novembro: 25.7
Digite a temperatura média de Dezembro: 27.6
RESULTADOS:
Média anual das temperaturas: 22.62°C
Meses com temperatura acima da média anual:
Janeiro: 28.50°C
Fevereiro: 26.30°C
Março: 22.70°C
Novembro: 25.70°C
Dezembro: 27.60°C

11. Uma empresa de e-commerce está interessada em analisar as vendas dos seus produtos. Os dados das vendas foram armazenados em um dicionário:

{'Produto A': 300, 'Produto B': 80, 'Produto C': 60,
 'Produto D': 200, 'Produto E': 250, 'Produto F': 30}
# Dados das vendas:
vendas = {
    'Produto A': 300,
    'Produto B': 80,
    'Produto C': 60,
    'Produto D': 200,
    'Produto E': 250,
    'Produto F': 30
}

# Cálculo do total de vendas:
total_vendas = sum(vendas.values())

# Encontrando o produto mais vendido
produto_mais_vendido = max(vendas, key=vendas.get)
quantidade_mais_vendida = vendas[produto_mais_vendido]

# Exibição de resultados:
print(f'Total de vendas: {total_vendas}')
print(f'Produto mais vendido: {produto_mais_vendido} ({quantidade_mais_vendida} unidades)')

Total de vendas: 920
Produto mais vendido: Produto A (300 unidades)

Continua...

Continuação:

12. Uma pesquisa de mercado foi feita para decidir qual design de marca infantil mais agrada as crianças. A pesquisa foi feita e o votos computados podem ser observados abaixo:

Tabela de votos da marca
Design 1 - 1334 votos
Design 2 - 982 votos
Design 3 - 1751 votos
Design 4 - 210 votos
Design 5 - 1811 votos

Adapte os dados fornecidos para uma estrutura de dicionário. A partir dele, informe o design vencedor e a porcentagem de votos recebidos.

# Estrutura de dicionário com os votos:
votos = {
    "Design 1": 1334,
    "Design 2": 982,
    "Design 3": 1751,
    "Design 4": 210,
    "Design 5": 1811
}

# Total de votos:
total_votos = sum(votos.values())

# Encontrando o design vencedor:
design_vencedor = max(votos, key=votos.get)
votos_vencedor = votos[design_vencedor]

# Cálculo de porcentagem:
percentual_vencedor = (votos_vencedor / total_votos) * 100

print(f'O design vencedor é {design_vencedor} com {percentual_vencedor:.2f}% dos votos.')

O design vencedor é Design 5 com 29.75% dos votos.

13. As pessoas colaboradoras de um setor da empresa que você trabalha vão receber um abono correspondente a 10% do salário devido ao ótimo desempenho do time. O setor financeiro solicitou sua ajuda para a verificação das consequências financeiras que esse abono irá gerar nos recursos. Assim, foi encaminhada para você uma lista com os salários que receberão o abono: [1172, 1644, 2617, 5130, 5532, 6341, 6650, 7238, 7685, 7782, 7903]. O abono de cada colaborador(a) não pode ser inferior a 200. Em código, transforme cada um dos salários em chaves de um dicionário e o abono de cada salário no elemento. Depois, informe o total de gastos com o abono, quantos(as) colaboradores(as) receberam o abono mínimo e qual o maior valor de abono fornecido.

salarios = [1172, 1644, 2617, 5130, 5532, 6341, 6650, 7238, 7685, 7782, 7903]

# Criação de dicionário com abonos:
abonos = {sal: max(sal * 0.10, 200) for sal in salarios}

# Total de gastos:
total_gastos = sum(abonos.values())

# Quantidade de funcionários que receberam o abono mínimo:
abono_minimo = sum(1 for valor in abonos.values() if valor == 200)

# Maior valor de abono:
maior_abono = max(abonos.values())

print(f'Dicionário de abonos:', abonos)
print(f'Total de gastos:', total_gastos)
print(f'Colaboradores com abono mínimo:', abono_minimo)
print(f'Maior abono fornecido: R$ {maior_abono:.2f}')

Dicionário de abonos: {1172: 200, 1644: 200, 2617: 261.7, 5130: 513.0, 5532: 553.2, 6341: 634.1, 6650: 665.0, 7238: 723.8000000000001, 7685: 768.5, 7782: 778.2, 7903: 790.3000000000001}
Total de gastos: 6087.8
Colaboradores com abono mínimo: 2
Maior abono fornecido: R$ 790.30

14. Uma equipe de cientistas de dados está estudando a diversidade biológica em uma floresta. A equipe fez a coleta de informações sobre o número de espécies de plantas e animais em cada área dessa floresta e armazenou essas informações em um dicionário. Nele, a chave descreve a área dos dados e os valores nas listas correspondem às espécies de plantas e animais nas áreas, respectivamente.

{'Área Norte': [2819, 7236],
 'Área Leste': [1440, 9492],
 'Área Sul': [5969, 7496],
 'Área Oeste': [14446, 49688],
 'Área Centro': [22558, 45148]}

Escreva um código para calcular a média de espécies por área e identificar a área com a maior diversidade biológica. Dica: use as funções built-in sum() e len().

# Dicionário de áreas e espécies:
areas = {
    'Área Norte': [2819, 7236],
    'Área Leste': [1440, 9492],
    'Área Sul': [5969, 7496],
    'Área Oeste': [14446, 49688],
    'Área Centro': [22558, 45148]
}

# Cálculo da média de espécies por área:
medias = {}
for area, especies in areas.items():
    medias[area] = sum(especies) / len(especies)

# Identificação da área com maior diversidade biológica:
area_maior_diversidade = max(medias, key=medias.get)

# Exibição de resultados:
print(f'Médias de espécies por área:')
for area, media in medias.items():
    print(f'{area}: {media:.2f}')

print(f' Área com maior diversidade biológica: {area_maior_diversidade}')

Médias de espécies por área:
Área Norte: 5027.50
Área Leste: 5466.00
Área Sul: 6732.50
Área Oeste: 32067.00
Área Centro: 33853.00
 Área com maior diversidade biológica: Área Centro