0
respostas

[Projeto] 13 Desafio: hora da prática parte 1

Aula 5 - Estruturas de dados
Questão 1

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

media = sum(lista_gastos)/len(lista_gastos)
print(f'A média de gastos é de R${media:.2f}')

Questão 2

qtd_maiortresmil = 0
for i in lista_gastos:
  if i > 3000:
    qtd_maiortresmil += 1


porcentagem = (qtd_maiortresmil / len(lista_gastos)) * 100
print(f'Quantidade de compras acima de R$3000: {qtd_maiortresmil}')
print(f'Porcentagem de compras acima de R$3000: {porcentagem:.2f}%')

Questão 3

lista_numeros = []

for i in range(1,6):
  numero = int(input('Digite um número inteiro: '))
  lista_numeros.append(numero)

print(lista_numeros)

Questão 4

lista_numeros = []

for i in range(1,6):
  numero = int(input('Digite um número inteiro: '))
  lista_numeros.append(numero)

lista_numeros.reverse()
print(lista_numeros)

Questão 5

numero = int(input('Digite um número inteiro: '))

lista_primos = []

for i in range(1, numero + 1):
  eh_primo = True
  for j in range(2, i):
    if i % j == 0:
      eh_primo = False
      break
  if eh_primo:
    lista_primos.append(i)

print(f'Números primros entre 1 e {numero}')
print(lista_primos)  

Questão 6

def eh_bissexto(ano):
  if (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0):
    return True
  else:
    return False


dia = int(input('Digite o dia: '))
mes = int(input('Digite o mês entre 1 e 12: '))
ano = int(input('Digite o ano entre 1900 e 2026: '))


#verifica se mes e ano estão no intervalo aceito
if 1 <= mes <= 12 and 1900 <= ano <= 2026:
   
    # Definir o limite de dias do mês atual
    if mes == 2:
        # Lógica manual do bissexto  poderia usar a função isleap da biblioteca calendar
        if (eh_bissexto(ano)):
            ultimo_dia = 29
        else:
            ultimo_dia = 28
    elif mes in [4, 6, 9, 11]:
        ultimo_dia = 30
    else:
        ultimo_dia = 31

    # Verifica se dia informado esta no limite de dias do mes
    if 1 <= dia <= ultimo_dia:
        print('Data válida')
    else:
        print('Data inválida: dia fora do limite para este mês/ano. Verifique se, não é ano bissexto e número de dias em fevereiro esta correto. ')

else:
    print('Data inválida: mês ou ano fora do intervalo permitido.')

Questão 7

duplicacao_bacterias = [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]  # Temos 10 dias

lista_percentual = []

print(f"{'Período':<15} | {'Crescimento %':<15}")
print("-" * 35)

for amostra_atual in range(1, len(duplicacao_bacterias)):
  percentual = 100 * (duplicacao_bacterias[amostra_atual] - duplicacao_bacterias[amostra_atual-1]) / duplicacao_bacterias[amostra_atual-1]
  lista_percentual.append(round(percentual,2))

  # Exibe a diferença dia a dia
  print(f"Dia {amostra_atual} para Dia {amostra_atual+1}: {percentual:>12.2f}%")

print(lista_percentual)

Questão 8

list_doces = []
list_amargos = []

for i in range(1, 11):
  id = int(input(f'Digite o ID do produto {i}: '))

  if id % 2 == 0:
    list_doces.append(id)
  else:
    list_amargos.append(id)

print(f'Quantidade de produtos doces: {len(list_doces)}')
print(f'Quantidade de produtos amargos: {len(list_amargos)}')

Questão 9

gabarito = {
  '01':'D',
  '02':'A',
  '03':'C',
  '04':'B',
  '05':'A',
  '06':'D',
  '07':'C',
  '08':'C',
  '09':'A',
  '10':'B'
}

qtd_acertos = 0
opcoes_validas = ['A', 'B', 'C', 'D']

for questao, valor in gabarito.items():
    while True:
        resposta = input(f'Digite a resposta da questão {questao} (A, B, C ou D): ').upper()
        
        if resposta in opcoes_validas:
            # Se for A,B,C,D verifica se acertou soma nota e sai do while para ir à próxima questão
            if resposta == valor:
                qtd_acertos += 1
            break 
        else:
            print(f'Resposta "{resposta}" é inválida! Tente novamente.')

print(f'Nota final: {qtd_acertos}.0')