Estels¶
Els observatoris astronómics permeten mesurar amb precisió la
distància i la magnitud (brillantor aparent) dels estels. La
distància a un estel es mesura en anys llum i la magnitud és un real
que té sentit invers a la brillantor: és petit quan l’estel brilla
molt, i gran quan brilla poc. Per exemple, la magnitud del Sol és
-26.73, i la de Polaris (Estel Polar) +2.01.
Per guardar la informació de alguns estels coneguts es fa servir un diccionari on la clau és el nom de l’estel (un string), i el valor és una tupla de dos reals: la magnitud i la distància a la Terra.
Dissenya la funció
magnitud_semblant()que donat un diccionari com el descrit abans, el nom d’un estels(un string) i una tolerànciaepsilon(un real), retorna la llista de noms d’estels que tenen una magnitud igual a la de l’estels, tenint en compte la tolerànciaepsilon. La llista no ha contenir l’estels, i ha d’estar ordenada alfabéticament. Podeu suposar quessempre serà al diccionari.Avís
Recorda que la comparació de la igualtat de dos reals
r1ir2no es fa amb l’operador==sino que s’ha de tenir en compte una tolerànciaepsilon:abs(r1-r2) < epsilonDesa la funció al fitxer
estels.py. La funció ha de passar el següent doctest:>>> d1 = { 'Sol': (-26.73, 0.000016), 'Artur': (-0.04, 37), ... 'Sirio': (-1.47, 8.6), 'Vega': (0.03, 25), ... 'Canopus': (-0.72, 310), 'Rígel': (0.12, 770), ... 'Rigil Kentaurus A': (-0.27, 4.4), 'Procyon': (0.34, 11) } >>> magnitud_semblant(d1, 'Vega', 0.05) [] >>> magnitud_semblant(d1, 'Vega', 0.1) ['Artur', 'Rígel'] >>> magnitud_semblant(d1, 'Vega', 1.0) ['Artur', 'Canopus', 'Procyon', 'Rigil Kentaurus A', 'Rígel']
Nota
Pots descarregar el fitxer complet amb tests
estels1.txtDissenya la funció
mes_propera_de_magnitud()que donat un diccionari com el descrit abans, un valor de magnitudmagn(un real) i una tolerànciaepsilon(un altre real), retorna el nom de l’estel de magnitudmagn(amb la tolerànciaepsilondonada) que està més a prop de la Terra. Si no hagués cap estel de magnitudmagnretorna l’string buit.Nota
Podeu suposar que les distàncies dels estels de magnitud
magnseran totes diferents.Desa la funció al fitxer
estels.py. La funció ha de passar el següent doctest:>>> d1 = { 'Sol': (-26.73, 0.000016), 'Nunki': (2.06, 220), ... 'Sirio': (-1.47, 8.6), 'Menkent': ((0.1+0.1+0.1)*6+0.26, 61), ... 'Canopus': (-0.72, 310), 'Alpheratz': (2.06, 97), ... 'Saiph': (2.05, 720), 'Alderamin': (2.44, 49) } >>> mes_propera_de_magnitud(d1, 2.05, 0.005) # només 'Saiph' 'Saiph' >>> mes_propera_de_magnitud(d1, 2.05, 0.02) # 'Saiph', 'Nunki', 'Menkent', 'Alpheratz' 'Menkent' >>> mes_propera_de_magnitud(d1, 2.06, 0.005) # 'Nunki', 'Menkent', 'Alpheratz' 'Menkent' >>> mes_propera_de_magnitud(d1, 2.06, 0.0000000000000001) # 'Nunki', 'Alpheratz' 'Alpheratz' >>> mes_propera_de_magnitud(d1, -1, 0.2) # cap estel ''
Nota
Pots descarregar el fitxer complet amb tests
estels2.txt
Solució
Disposeu de solucions al fitxer estels.py