Python - Programa diccionario

 
Vista:
sin imagen de perfil
Val: 66
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Programa diccionario

Publicado por Gonzalo (35 intervenciones) el 29/03/2019 12:27:18
Buenas tardes,

estoy empezando a programar en Python (soy un completo novato). Tengo que resolver el siguiente algoritmo. Dado un diccionario que contiene como clave el nombre de los planetas del Sistema Solar, y como valor la masa relativa de cada planeta con respecto a la Tierra (donde la Tierra tendría el valor 1), necesito crear una función (def)) donde, dada una lista inicial de planetas introducida por el usuario, determine cuáles de estos planetas de la lista tienen una masa relativa estrictamente superior a la de la Tierra.

Hay que tener en cuenta que el nombre de los planetas que se pasa por la lista puede estar en mayúsculas, minúsculas o una combinación de ambos, y que no tiene que haber planetas repetidos en la lista.

¿Alguien podría ayudarme?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de 606
Val: 4
Ha disminuido su posición en 20 puestos en Python (en relación al último mes)
Gráfica de Python

Programa diccionario

Publicado por 606 (1 intervención) el 01/04/2019 04:38:41
Estoy usando Python 3.7
Debo agregar que no se a que se refiere con estrictamente superior, pero la estructura es la misma.
Las llaves del diccionario (los planetas) estan escritos en minuscula para que la comparacion con la lista sea posible segun la estructura que hice. Puedes cambiarlo a mayusculas y cambiar el i.lower() a i.upper() si quieres, es indiferente.

Puse comentarios para explicar que hace el programa en las partes que me parecia que podian resultar confusas para un novato, ojala haya sido lo suficientemente claro. Buena suerte!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
planetas = {'tierra': 1, 'jupiter': 0.82293, 'marte': 1.22}
 
def comparaPlanetas(lista):
    lista = [i.lower() for i in lista] # itera sobre la lista pasada como argumento
                                      # y transforma los elementos a minusculas
    for y in lista:
        lista = list(dict.fromkeys(lista)) # crea un diccionario de la lista 
                                     # para eliminar los elementos repetidos, y vuelve a transformarlo en lista
    for x in lista:
        if planetas[x] < planetas['tierra']: # itera sobre la lista y compara si el valor en el diccionario 
                                     # con ese nombre es mas alto que el del valor "tierra"
            return x  # regresa el nombre del planeta, modificalo a tu gusto para que regrese una oracion mas acorde a tus necesidades
 
listaPlanetas = ['MARTE', 'JUPITER', 'jUpiter']
print(comparaPlanetas(listaPlanetas))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 66
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Programa diccionario

Publicado por Gonzalo (35 intervenciones) el 01/04/2019 17:20:38
Muchísimas gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar