print('Menú de opciones')
print('')
print('Escriba una de estas opciones: \n1: Estadisticos de personas \n2: Recomendador por genero y edad \n3: Ranking')
print('')
print('Estos son los géneros disponibles:\nAction Adventure Animation\nChildren's Comedy Crime\nDocumentary Drama Fantasy\nFilm-Noir Horror Musical\nMystery Romance Sci-Fi\nThriller War Western')
print('')
n=str(input('Opción:'))
usuario=open('usuarios.csv')
notas=open('notas.csv')
peliculas=open('peliculas.csv')
if n=='1':
print('Estadisticos de personas')
genero=str(input('Ingrese genero de la persona:'))
categoria=str(input('Ingrese genero pelicula:'))
diccionario={}
for linea in usuario:
ax=linea.strip().split(',')
if ax[1]==genero:
diccionario[ax[0]]=[ax[2]]
usuario.close()
listacategoria=[]
for linea in peliculas:
ax2=linea.strip().split(',')
if categoria in ax2[2]:
listacategoria.append(ax2[0])
peliculas.close()
rev=''
for linea in notas:
ax3=linea.strip().split(',')
if (ax3[1] in listacategoria) and (rev!=ax3[0]) and (ax3[0] in diccionario):
diccionario[ax3[0]].append('v')
rev=ax3[0]
notas.close()
#Dividimos los rangos etarios
re_1=0
re_18=0
re_25=0
re_35=0
re_45=0
re_50=0
re_56=0
for f in diccionario:
if 'v' in diccionario[f]:
if diccionario[f][0]=='1':
re_1+=1
elif diccionario[f][0]=='18':
re_18+=1
elif diccionario[f][0]=='25':
re_25+=1
elif diccionario[f][0]=='35':
re_35+=1
elif diccionario[f][0]=='45':
re_45+=1
elif diccionario[f][0]=='50':
re_50+=1
elif diccionario[f][0]=='56':
re_56+=1
print('Rango menor 18:',re_1)
print('Rango 18-24:',re_18)
print('Rango 25-34:',re_25)
print('Rango 35-44:',re_35)
print('Rango 45-49:',re_45)
print('Rango 50-55:',re_50)
print('Rango mayor 56:',re_56)
elif n=='2':
print('Recomendador por género y edad')
Edad=int(input('Ingrese su edad:'))
Gender=str(input('Ingrese su género:'))
if Edad in range(1,18):
Re='1'
elif Edad in range(18,25):
Re='18'
elif Edad in range(25,35):
Re='25'
elif Edad in range(35,45):
Re='35'
elif Edad in range(45,50):
Re='45'
elif Edad in range(50,56):
Re='50'
elif Edad>=56:
Re='56'
IDE=[]
for linea in usuario:
ax4=linea.strip().split(',')
if ax4[1]==Gender and ax4[2]==Re:
IDE.append(ax4[0])
usuario.close()
IDEPN={}
for linea in notas:
ax5=linea.strip().split(',')
if (ax5[0] in IDE) and (ax5[1] not in IDEPN):
IDEPN[ax5[1]]=[int(ax5[2]),(1)]
elif (ax5[0] in IDE) and (ax5[1] in IDEPN):
IDEPN[ax5[1]]=[int(IDEPN[ax5[1]][0])+int(ax5[2]),int(IDEPN[ax5[1]][1])+(1)]
notas.close()
diccionario2={}
for y in IDEPN:
if int(IDEPN[y][1])>=10:
diccionario2[y]=float(IDEPN[y][0])/float(IDEPN[y][1])
IDEmaxima=''
maximo=-float('inf')
for ID in diccionario2:
if diccionario2[ID]>=maximo:
maximo=diccionario2[ID]
IDEmaxima=ID
Pelicula_Recomendada=''
for linea in peliculas:
ax6=linea.strip().split(',')
if IDEmaxima==ax6[0]:
Pelicula_Recomendada=ax6[1]
peliculas.close()
print(Pelicula_Recomendada)
elif n=='3':
print('Ranking')
categoria2=str(input('Ingrese genero pelicula:'))
idn=[]
for linea in peliculas:
ax7=linea.strip().split(',')
if categoria2 in ax7[2]:
idn.append(ax7[0])
dicnota={}
for linea in notas:
ax8=linea.strip().split(',')
if (ax8[1] in idn) and (ax8[1] not in dicnota):
dicnota[ax8[1]]=[int(ax8[2]),int(1)]
elif (ax8[1] in idn)and (ax8[1]in dicnota):
dicnota[ax8[1]]=[int(dicnota[ax8[1]][0])+int(ax8[2]),int(dicnota[ax8[1]][1])+int(1)]
promedio={}
for f in dicnota:
if int(dicnota[f][1])>=10:
promedio[f]=(float(dicnota[f][0])/float(dicnota[f][1]))
import operator #sacado de internet https://www.analyticslane.com/2019/01/14/ordenacion-de-diccionarios-en-python-mediante-clave-o-valor/
promedio_orden=sorted(promedio.items(),key=operator.itemgetter(1), reverse=True)
cont=0
toppelis=[]
for linea in promedio_orden:
cont+=1
toppelis.append([linea[0],linea[1]])
if cont==10:
break
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[0][0]==axtop[0]:
toppelis[0][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[1][0]==axtop[0]:
toppelis[1][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[2][0]==axtop[0]:
toppelis[2][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[3][0]==axtop[0]:
toppelis[3][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[4][0]==axtop[0]:
toppelis[4][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[5][0]==axtop[0]:
toppelis[5][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[6][0]==axtop[0]:
toppelis[6][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[7][0]==axtop[0]:
toppelis[7][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[8][0]==axtop[0]:
toppelis[8][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[9][0]==axtop[0]:
toppelis[9][0]=axtop[1]
peliculas3.close
arch=open('top'+categoria2+'.txt','w')
arch.write('1,'+str(toppelis[0][0])+','+str(round(toppelis[0][1],2))+'\n')
arch.write('2,'+str(toppelis[1][0])+','+str(round(toppelis[1][1],2))+'\n')
arch.write('3,'+str(toppelis[2][0])+','+str(round(toppelis[2][1],2))+'\n')
arch.write('4,'+str(toppelis[3][0])+','+str(round(toppelis[3][1],2))+'\n')
arch.write('5,'+str(toppelis[4][0])+','+str(round(toppelis[4][1],2))+'\n')
arch.write('6,'+str(toppelis[5][0])+','+str(round(toppelis[5][1],2))+'\n')
arch.write('7,'+str(toppelis[6][0])+','+str(round(toppelis[6][1],2))+'\n')
arch.write('8,'+str(toppelis[7][0])+','+str(round(toppelis[7][1],2))+'\n')
arch.write('9,'+str(toppelis[8][0])+','+str(round(toppelis[8][1],2))+'\n')
arch.write('10,'+str(toppelis[9][0])+','+str(round(toppelis[9][1],2))+'\n')
arch.close()
else:
print('Entrada inválida')
print('')
print('Escriba una de estas opciones: \n1: Estadisticos de personas \n2: Recomendador por genero y edad \n3: Ranking')
print('')
print('Estos son los géneros disponibles:\nAction Adventure Animation\nChildren's Comedy Crime\nDocumentary Drama Fantasy\nFilm-Noir Horror Musical\nMystery Romance Sci-Fi\nThriller War Western')
print('')
n=str(input('Opción:'))
usuario=open('usuarios.csv')
notas=open('notas.csv')
peliculas=open('peliculas.csv')
if n=='1':
print('Estadisticos de personas')
genero=str(input('Ingrese genero de la persona:'))
categoria=str(input('Ingrese genero pelicula:'))
diccionario={}
for linea in usuario:
ax=linea.strip().split(',')
if ax[1]==genero:
diccionario[ax[0]]=[ax[2]]
usuario.close()
listacategoria=[]
for linea in peliculas:
ax2=linea.strip().split(',')
if categoria in ax2[2]:
listacategoria.append(ax2[0])
peliculas.close()
rev=''
for linea in notas:
ax3=linea.strip().split(',')
if (ax3[1] in listacategoria) and (rev!=ax3[0]) and (ax3[0] in diccionario):
diccionario[ax3[0]].append('v')
rev=ax3[0]
notas.close()
#Dividimos los rangos etarios
re_1=0
re_18=0
re_25=0
re_35=0
re_45=0
re_50=0
re_56=0
for f in diccionario:
if 'v' in diccionario[f]:
if diccionario[f][0]=='1':
re_1+=1
elif diccionario[f][0]=='18':
re_18+=1
elif diccionario[f][0]=='25':
re_25+=1
elif diccionario[f][0]=='35':
re_35+=1
elif diccionario[f][0]=='45':
re_45+=1
elif diccionario[f][0]=='50':
re_50+=1
elif diccionario[f][0]=='56':
re_56+=1
print('Rango menor 18:',re_1)
print('Rango 18-24:',re_18)
print('Rango 25-34:',re_25)
print('Rango 35-44:',re_35)
print('Rango 45-49:',re_45)
print('Rango 50-55:',re_50)
print('Rango mayor 56:',re_56)
elif n=='2':
print('Recomendador por género y edad')
Edad=int(input('Ingrese su edad:'))
Gender=str(input('Ingrese su género:'))
if Edad in range(1,18):
Re='1'
elif Edad in range(18,25):
Re='18'
elif Edad in range(25,35):
Re='25'
elif Edad in range(35,45):
Re='35'
elif Edad in range(45,50):
Re='45'
elif Edad in range(50,56):
Re='50'
elif Edad>=56:
Re='56'
IDE=[]
for linea in usuario:
ax4=linea.strip().split(',')
if ax4[1]==Gender and ax4[2]==Re:
IDE.append(ax4[0])
usuario.close()
IDEPN={}
for linea in notas:
ax5=linea.strip().split(',')
if (ax5[0] in IDE) and (ax5[1] not in IDEPN):
IDEPN[ax5[1]]=[int(ax5[2]),(1)]
elif (ax5[0] in IDE) and (ax5[1] in IDEPN):
IDEPN[ax5[1]]=[int(IDEPN[ax5[1]][0])+int(ax5[2]),int(IDEPN[ax5[1]][1])+(1)]
notas.close()
diccionario2={}
for y in IDEPN:
if int(IDEPN[y][1])>=10:
diccionario2[y]=float(IDEPN[y][0])/float(IDEPN[y][1])
IDEmaxima=''
maximo=-float('inf')
for ID in diccionario2:
if diccionario2[ID]>=maximo:
maximo=diccionario2[ID]
IDEmaxima=ID
Pelicula_Recomendada=''
for linea in peliculas:
ax6=linea.strip().split(',')
if IDEmaxima==ax6[0]:
Pelicula_Recomendada=ax6[1]
peliculas.close()
print(Pelicula_Recomendada)
elif n=='3':
print('Ranking')
categoria2=str(input('Ingrese genero pelicula:'))
idn=[]
for linea in peliculas:
ax7=linea.strip().split(',')
if categoria2 in ax7[2]:
idn.append(ax7[0])
dicnota={}
for linea in notas:
ax8=linea.strip().split(',')
if (ax8[1] in idn) and (ax8[1] not in dicnota):
dicnota[ax8[1]]=[int(ax8[2]),int(1)]
elif (ax8[1] in idn)and (ax8[1]in dicnota):
dicnota[ax8[1]]=[int(dicnota[ax8[1]][0])+int(ax8[2]),int(dicnota[ax8[1]][1])+int(1)]
promedio={}
for f in dicnota:
if int(dicnota[f][1])>=10:
promedio[f]=(float(dicnota[f][0])/float(dicnota[f][1]))
import operator #sacado de internet https://www.analyticslane.com/2019/01/14/ordenacion-de-diccionarios-en-python-mediante-clave-o-valor/
promedio_orden=sorted(promedio.items(),key=operator.itemgetter(1), reverse=True)
cont=0
toppelis=[]
for linea in promedio_orden:
cont+=1
toppelis.append([linea[0],linea[1]])
if cont==10:
break
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[0][0]==axtop[0]:
toppelis[0][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[1][0]==axtop[0]:
toppelis[1][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[2][0]==axtop[0]:
toppelis[2][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[3][0]==axtop[0]:
toppelis[3][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[4][0]==axtop[0]:
toppelis[4][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[5][0]==axtop[0]:
toppelis[5][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[6][0]==axtop[0]:
toppelis[6][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[7][0]==axtop[0]:
toppelis[7][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[8][0]==axtop[0]:
toppelis[8][0]=axtop[1]
peliculas3.close
peliculas3=open('peliculas.csv')
for a in peliculas3:
axtop=a.strip().split(',')
if toppelis[9][0]==axtop[0]:
toppelis[9][0]=axtop[1]
peliculas3.close
arch=open('top'+categoria2+'.txt','w')
arch.write('1,'+str(toppelis[0][0])+','+str(round(toppelis[0][1],2))+'\n')
arch.write('2,'+str(toppelis[1][0])+','+str(round(toppelis[1][1],2))+'\n')
arch.write('3,'+str(toppelis[2][0])+','+str(round(toppelis[2][1],2))+'\n')
arch.write('4,'+str(toppelis[3][0])+','+str(round(toppelis[3][1],2))+'\n')
arch.write('5,'+str(toppelis[4][0])+','+str(round(toppelis[4][1],2))+'\n')
arch.write('6,'+str(toppelis[5][0])+','+str(round(toppelis[5][1],2))+'\n')
arch.write('7,'+str(toppelis[6][0])+','+str(round(toppelis[6][1],2))+'\n')
arch.write('8,'+str(toppelis[7][0])+','+str(round(toppelis[7][1],2))+'\n')
arch.write('9,'+str(toppelis[8][0])+','+str(round(toppelis[8][1],2))+'\n')
arch.write('10,'+str(toppelis[9][0])+','+str(round(toppelis[9][1],2))+'\n')
arch.close()
else:
print('Entrada inválida')