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 5] Desafio: hora da prática

Questã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().

costs = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]
print(f'A média de gastos é {sum(costs)/len(costs)}')
$ A média de gastos é 3144.222

Questão 2

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

costs = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]
quantity_purchases = len([1 for i in costs if i > 3000])
print(f'Foram {quantity_purchases} compras acima de 3000 reais.')
print(f'Isso representa {((quantity_purchases / len(costs)) * 100):.2f}% do total de compras.')
$ Foram 7 compras acima de 3000 reais.
Isso representa 70.00% do total de compras.

Questão 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].

numbers = []
for i in range(5):
    numbers.append(int(input(f'Digite o {i+1}º número: ')))
print(numbers)
$ Digite o 1º número: 1
Digite o 2º número: 4
Digite o 3º número: 7
Digite o 4º número: 2
Digite o 5º número: 4
[1, 4, 7, 2, 4]

Questão 4

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

numbers = []
for i in range(5):
    numbers.append(int(input(f'Digite o {i+1}º número: ')))
print(numbers[::-1])
$ Digite o 1º número: 1
Digite o 2º número: 2
Digite o 3º número: 3
Digite o 4º número: 4
Digite o 5º número: 5
[5, 4, 3, 2, 1]

Questão 6

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

import sys
date = input('Digite uma data no formato dd/mm/aaaa: ')
date = date.split('/')
if len(date) != 3:
    print('Data inválida!')
    sys.exit()

date = [int(i) for i in date if i.isnumeric()]

if len(date) != 3:
    print('Data inválida!')
    sys.exit('Invalid type of Date.')

if len(str(date[2])) != 4 or date[0] > 31 or date[1] > 12 or (date[1] in [4, 6, 9, 11] and date[0] > 30):
    print('Data inválida!')
    sys.exit()

print('Data válida!')
$ Digite uma data no formato dd/mm/aaaa: 10/10/2020
Data válida!

$ Digite uma data no formato dd/mm/aaaa: 10/13/2020
Data inválida!
An exception has occurred, use %tb to see the full traceback.

SystemExit

Questão 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 multiplicadas por dia, com base em um processo de duplicação diária 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).

bacterias = [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]
growth = [round(100 * ((bacterias[i] - bacterias[i-1]) / bacterias[i-1]), 2) for i in range(1, len(bacterias))]
print(growth)
$ [75.0, 57.14, 51.52, 56.0, 44.87, 46.9, 51.2, 50.6, 50.53]

Questão 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.

products = [int(input(f'Digite o {i+1}º ID: ')) for i in range(10)]
quantity = {'doces': 0, 'amargos': 0}
for i in products:
    if i % 2 == 0:
        quantity['doces'] += 1
        continue
    quantity['amargos'] += 1

print(f'Foram {quantity['doces']} produtos doces e {quantity['amargos']} produtos amargos')
$ Digite o 1º ID: 1
Digite o 2º ID: 2
Digite o 3º ID: 3
Digite o 4º ID: 4
Digite o 5º ID: 5
Digite o 6º ID: 6
Digite o 7º ID: 7
Digite o 8º ID: 8
Digite o 9º ID: 9
Digite o 10º ID: 10
Foram 5 produtos doces e 5 produtos amargos
1 resposta
solução!

Oii Julia, tudo bem?

Obrigada por compartilhar suas soluções no fórum! Dá para ver que você foi além do básico em várias questões.

Alguns destaques que vale mencionar:

Na questão 2, usar list comprehension dentro do len() é uma escolha bem elegante. Funciona perfeitamente e é bem legível.

Na questão 6, você fez uma validação bem robusta, verificando o formato, se os valores são numéricos, o tamanho do ano e até os meses com 30 dias. Isso mostra cuidado com os casos de borda.

Na questão 7, o uso de round() diretamente na list comprehension deixou o código compacto e limpo.

No geral, as soluções estão corretas e bem escritas. Continue assim!

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade