Atividade em Python
a) incorpore ao banco de dados mais 15 nomes, incluindo as informações sobre altura, peso e idade para cada pessoa;
b) salve o banco de dados no disco;
c) leia o banco de dados a partir do disco e salve em outra variável do tipo lista;
d) para cada nome armazenado no banco de dados, crie um novo campo, associado a esse nome, que contenha o Índice de Massa Corporal (IMC) da pessoa;
e) ordene a lista considerando o campo Idade (em ordem decrescente);
f) gere um outro banco de dados, a partir do primeiro, ordenado pela idade do indivíduo, que contenha apenas aquelas pessoas com um IMC entre 18,5 e 24,99, inclusive, isto é, os que possuem um IMC considerado normal;
g) ordene essa nova lista a partir do IMC, em ordem crescente;
h) apague do primeiro banco de dados as pessoas que estão nas duas últimas posições do segundo banco de dados, após a ordenação;
i) imprima na tela apenas o nome e idade dos cinco primeiro indivíduos (se houver) armazenados no segundo banco de dados;
j) salve em disco os dois bancos de dados.
Resolução:
import pickle
arquivo = open("Banco_de_Dados.dat","r")
dados = pickle.load(arquivo)
arquivo.close()
#a)
x=input("Quantos nomes voce quer adicionar a lista?: ")
x=int(x)
for a in range (0, x):
lista = input("Digite os dados do usuario: ").split()
dados.append(lista)
#b)
arquivo = open("Banco_de_Dados.dat","w")
pickle.dump(dados,arquivo)
arquivo.close()
#c)
arquivo = open("Banco_de_Dados.dat","r")
dados2 = pickle.load(arquivo)
arquivo.close()
#d)
for a in range (0,len(dados2)):
dados2[a][1]=int(dados[a][1])
dados2[a][2]=float(dados[a][2])
dados2[a][3]=float(dados[a][3])
dados2[a][4:4]=[dados2[a][2]/dados2[a][3]**2]
#e)
dados2.sort(reverse=True, key=lambda x:x[1])
#f)
normal=list(filter(lambda x: 18.5<=x[4]<=24.99, dados2))
arquivo2 = open("Banco_de_Dados2.dat","w")
pickle.dump(normal, arquivo2)
arquivo2.close()
#g)
normal.sort(key=lambda x:x[4])
arquivo2 = open("Banco_de_Dados2.dat","w")
pickle.dump(normal, arquivo2)
arquivo2.close()
#h)
quantidade2 = len(normal)
pessoa1 = normal[quantidade2-1][0]
pessoa2 = normal[quantidade2-2][0]
achei=0
posicao=0
while(achei==0):
if(dados2[posicao][0] == pessoa1):
achei=1
dados2.pop(posicao)
else:
posicao = posicao + 1
achei=0
posicao=0
while(achei==0):
if(dados2[posicao][0] == pessoa2):
achei=1
dados2.pop(posicao)
else:
posicao = posicao + 1
#i)
print('Nome, idade')
quantidade = len(normal)
if(quantidade >= 5):
for i in range(0,5):
print (normal[i][0],', ',normal[i][1],' anos')
else:
for i in range(0,quantidade):
print (normal[i][0],', ',normal[i][1],' anos')
#j)
arquivo = open("Banco_de_Dados.dat","w")
pickle.dump(dados2,arquivo)
arquivo.close()
arquivo2 = open("Banco_de_Dados2.dat","w")
pickle.dump(normal, arquivo2)
arquivo2.close()
b) salve o banco de dados no disco;
c) leia o banco de dados a partir do disco e salve em outra variável do tipo lista;
d) para cada nome armazenado no banco de dados, crie um novo campo, associado a esse nome, que contenha o Índice de Massa Corporal (IMC) da pessoa;
e) ordene a lista considerando o campo Idade (em ordem decrescente);
f) gere um outro banco de dados, a partir do primeiro, ordenado pela idade do indivíduo, que contenha apenas aquelas pessoas com um IMC entre 18,5 e 24,99, inclusive, isto é, os que possuem um IMC considerado normal;
g) ordene essa nova lista a partir do IMC, em ordem crescente;
h) apague do primeiro banco de dados as pessoas que estão nas duas últimas posições do segundo banco de dados, após a ordenação;
i) imprima na tela apenas o nome e idade dos cinco primeiro indivíduos (se houver) armazenados no segundo banco de dados;
j) salve em disco os dois bancos de dados.
Resolução:
import pickle
arquivo = open("Banco_de_Dados.dat","r")
dados = pickle.load(arquivo)
arquivo.close()
#a)
x=input("Quantos nomes voce quer adicionar a lista?: ")
x=int(x)
for a in range (0, x):
lista = input("Digite os dados do usuario: ").split()
dados.append(lista)
#b)
arquivo = open("Banco_de_Dados.dat","w")
pickle.dump(dados,arquivo)
arquivo.close()
#c)
arquivo = open("Banco_de_Dados.dat","r")
dados2 = pickle.load(arquivo)
arquivo.close()
#d)
for a in range (0,len(dados2)):
dados2[a][1]=int(dados[a][1])
dados2[a][2]=float(dados[a][2])
dados2[a][3]=float(dados[a][3])
dados2[a][4:4]=[dados2[a][2]/dados2[a][3]**2]
#e)
dados2.sort(reverse=True, key=lambda x:x[1])
#f)
normal=list(filter(lambda x: 18.5<=x[4]<=24.99, dados2))
arquivo2 = open("Banco_de_Dados2.dat","w")
pickle.dump(normal, arquivo2)
arquivo2.close()
#g)
normal.sort(key=lambda x:x[4])
arquivo2 = open("Banco_de_Dados2.dat","w")
pickle.dump(normal, arquivo2)
arquivo2.close()
#h)
quantidade2 = len(normal)
pessoa1 = normal[quantidade2-1][0]
pessoa2 = normal[quantidade2-2][0]
achei=0
posicao=0
while(achei==0):
if(dados2[posicao][0] == pessoa1):
achei=1
dados2.pop(posicao)
else:
posicao = posicao + 1
achei=0
posicao=0
while(achei==0):
if(dados2[posicao][0] == pessoa2):
achei=1
dados2.pop(posicao)
else:
posicao = posicao + 1
#i)
print('Nome, idade')
quantidade = len(normal)
if(quantidade >= 5):
for i in range(0,5):
print (normal[i][0],', ',normal[i][1],' anos')
else:
for i in range(0,quantidade):
print (normal[i][0],', ',normal[i][1],' anos')
#j)
arquivo = open("Banco_de_Dados.dat","w")
pickle.dump(dados2,arquivo)
arquivo.close()
arquivo2 = open("Banco_de_Dados2.dat","w")
pickle.dump(normal, arquivo2)
arquivo2.close()
Comentários
Postar um comentário