4. Tendències de borsa (2,5 punts)¶
Una llista de cotitzacions en borsa d’una empresa és una llista on el primer element és un string amb el nom de l’empresa i la resta una sèrie de valors numèrics amb les cotitzacions diàries ordenades cronològicament. Per exemple:
>>> lc1 = ['ACME', 100, 102, 108, 103, 101, 99, 94, 98, 100]
Un màxim significatiu és una cotització més gran que la cotització anterior i que la posterior i que també és més gran que la mitjana de les cotitzacions anteriors i la mitjana de les cotitzacions posteriors.
Un mínim significatiu és una cotització més petita que la cotització anterior i que la posterior i que també és més petita que la mitjana dels punts anteriors i la mitjana dels punts posteriors.
Dissenya la següent funció i desa-la al fitxer
borsa.py.- extrems(lcot)¶
Retorna els màxims i mínims significatius de la llista de cotitzacions lcot. La primera i l’última cotització no poden ser màxims o mínims significatius.
- param list lcot:
llista de cotitzacions
- rtype:
list
- return:
una llista on cada element és una tupla amb la informació d’un màxim o mínim significatiu i conté:
el nom de l’empresa
l’string
'max'si és un màxim significatiu i l’string'min'si és un mínim significatiu.la cotització del màxim o el mínim
Els següents doctests mostren exemples del que ha de fer la funció:
>>> lc1 = ['ACME', 100, 102, 108, 103, 101, 99, 94, 98, 100] >>> extrems(lc1) [('ACME', 'max', 108), ('ACME', 'min', 94)] >>> lc2 = ['NOVA', 50, 53, 57, 54, 52, 55, 60, 56, 54] >>> extrems(lc2) [('NOVA', 'max', 57), ('NOVA', 'min', 52), ('NOVA', 'max', 60)] >>> lc3 = ['PLANA', 100, 101, 102, 103, 104, 105, 106, 107, 108] >>> extrems(lc3) []
Disposes de més tests al fitxer
test-extrems.txtDisposem d’una llista d’empreses on cada element és una llista de cotitzacions. Per exemple:
>>> lborsa1 = [ ... ['ACME', 100, 102, 108, 103, 101, 99, 94, 98, 100], ... ['NOVA', 50, 53, 57, 54, 52, 55, 60, 56, 54], ... ['PLANA', 100, 101, 102, 103, 104, 105, 106, 107, 108] ... ]
Als màxims i mínims significatius els anomenem extrems. Representem la tendència d’una empresa amb un string de la següent forma:
Si una empresa té menys de dos extrems, la seva tendència és
'indefinida'.Si el preu de l’últim extrem és més gran o igual que el preu del primer extrem, la tendència és
'alcista'.Si el preu de l’últim extrem és més petit que el preu del primer extrem, la tendència és
'baixista'.
Dissenya la funció següent i desa-la al fitxer
borsa.py.- tendencia(lemp)¶
Retorna la llista de tendències de les empreses de la llista lemp.
- param list lemp:
llista d’empreses
- rtype:
list
- return:
una llista on cada element és una tupla de dos elements amb el nom d’una empresa de lemp i l’string amb la seva tendència, en el mateix ordre en que apareixen a lemp.
Aquesta funció ha de cridar la funció
extrems().Els següents doctests mostren exemples del que ha de fer la funció:
>>> lborsa1 = [ ... ['ACME', 100, 102, 108, 103, 101, 99, 94, 98, 100], ... ['NOVA', 50, 53, 57, 54, 52, 55, 60, 56, 54], ... ['PLANA', 100, 101, 102, 103, 104, 105, 106, 107, 108] ... ] >>> tendencia(lborsa1) [('ACME', 'baixista'), ('NOVA', 'alcista'), ('PLANA', 'indefinida')]
Disposes de més tests al fitxer
test-tendencia.txtDisposes de solucions al fitxer
borsa.py.