Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] 05_Estrutura de dados - Desafio Hora da Prática - Atividade 6/7/8

## 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.
import datetime

# Dicionário com a quantidade de dias por mês
meses = {
    'Janeiro': 31,
    'Fevereiro': 28,  # Fevereiro pode ser 28 ou 29 dependendo se é bissexto
    'Março': 31,
    'Abril': 30,
    'Maio': 31,
    'Junho': 30,
    'Julho': 31,
    'Agosto': 31,
    'Setembro': 30,
    'Outubro': 31,
    'Novembro': 30,
    'Dezembro': 31
}

# Solicita o ano, garantindo que tenha 4 dígitos
ano = input('Digite o ano (4 dígitos): ')
while len(ano) != 4 or not ano.isdigit():  # Verifica se o ano tem 4 dígitos e é um número
    print("Ano inválido! O ano deve ter 4 dígitos.")
    ano = input('Digite o ano (4 dígitos): ')
ano = int(ano)

# Verifica se o ano é bissexto para redefinir o mês de fevereiro
if (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0):
    meses['Fevereiro'] = 29

# Solicita o mês, garantindo que tenha 2 dígitos e seja válido
mes = input('Digite o mês (2 dígitos): ')
while len(mes) != 2 or not mes.isdigit() or int(mes) < 1 or int(mes) > 12:  # Verifica se o mês tem 2 dígitos e é válido
    print("Mês inválido! O mês deve ter 2 dígitos e ser válido (1 a 12).")
    mes = input('Digite o mês (2 dígitos): ')
mes = int(mes)

# Solicita o dia, garantindo que tenha 2 dígitos e seja válido para o mês
dia = input('Digite o dia (2 dígitos): ')
while len(dia) != 2 or not dia.isdigit():  # Verifica se o dia tem 2 dígitos e é um número
    print("Dia inválido! O dia deve ter 2 dígitos.")
    dia = input('Digite o dia (2 dígitos): ')

dia = int(dia)
# Verifica se o dia é válido para o mês
while dia < 1 or dia > meses[list(meses.keys())[mes - 1]]:
    print(f"Dia inválido! O mês {mes} tem entre 1 e {meses[list(meses.keys())[mes - 1]]} dias.")
    dia = input('Digite o dia (2 dígitos): ')
    while len(dia) != 2 or not dia.isdigit():  # Verifica se o dia tem 2 dígitos
        print("Dia inválido! O dia deve ter 2 dígitos.")
        dia = input('Digite o dia (2 dígitos): ')
    dia = int(dia)

# Verifica qual será o dia da semana
data = datetime.date(ano, mes, dia)
dias_da_semana = ['Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado', 'Domingo']
dia_da_semana = dias_da_semana[data.weekday()]

# Exibe o resultado final, garantindo que o dia, mês e ano sejam exibidos com 2 dígitos
print(f'A data {dia:02}/{mes:02}/{ano} é uma {dia_da_semana}.')
## 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).
coloniabac = [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]

evolucaodia = { 'Dia 01' : coloniabac[0],
                'Dia 02' : coloniabac[1],
                'Dia 03' : coloniabac[2],
                'Dia 04' : coloniabac[3],
                'Dia 05' : coloniabac[4],
                'Dia 06' : coloniabac[5],
                'Dia 07' : coloniabac[6],
                'Dia 08' : coloniabac[7],
                'Dia 09' : coloniabac[8],
                'Dia 10' : coloniabac[9] 
                }

# Evolução dia a dia em porcentagem
evolucaodia_porcentagem = {}
for i in range(1, len(coloniabac)):
    evolucaodia_porcentagem[f'Dia {i+1}'] = ((coloniabac[i] - coloniabac[i-1]) / coloniabac[i-1]) * 100
    print(f'Dia {i+1}: {evolucaodia_porcentagem[f"Dia {i+1}"]:.2f}%')
## 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.
docepar = []
salgadoimpar = []

for i in range(0, 10):
    codigo = int(input('Digite o código do produto (2 digitos): '))
    
    # Valida se o código está no intervalo correto
    while codigo < 1 or codigo > 99:
        print('Código inválido! Digite novamente.')
        codigo = int(input('Digite o código do produto (2 digitos): '))
    
    # Após a validação do código, classifica como doce ou salgado
    if codigo % 2 == 0:
        docepar.append(codigo)
    else:
        salgadoimpar.append(codigo)

# Total de doces
total_doces = len(docepar)
print('Total de doces: ', total_doces)

# Total de salgados
total_salgados = len(salgadoimpar)
print('Total de salgados: ', total_salgados)
1 resposta
solução!

Oii, Marinaldo!

Agradeço por compartilhar essas atividades com a comunidade Alura.

Seu código tá bem organizado e com comentários claros, o que ajuda muito na compreensão. Gostei bastante do cuidado com validações, principalmente no exercício 6, onde você lida com datas — um tema cheio de detalhes!

Aqui vai uma sugestão para o exercício 7: se quiser visualizar o crescimento em uma lista final organizada, pode gerar uma estrutura mais limpa para análise:



coloniabac = [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]

crescimento = []
for i in range(1, len(coloniabac)):
    percentual = ((coloniabac[i] - coloniabac[i-1]) / coloniabac[i-1]) * 100
    crescimento.append(round(percentual, 2))

print(f'Crescimento diário em %: {crescimento}')

Isso facilita se você quiser exportar os dados ou fazer algum gráfico com ferramentas como o matplotlib.

Parabéns pelo nível de detalhe e capricho nas respostas! Continue praticando com esse ritmo.

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