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')