Python - Ayuda con ejercicio de listas

 
Vista:
sin imagen de perfil

Ayuda con ejercicio de listas

Publicado por anonymous (38 intervenciones) el 11/06/2021 01:25:40
Hola alguien me podría ayudar definiendo estas dos funciones porfa

Si lluvia= [1,40,3,30,6,16,10,9,11,9,12,40,15,40], entonces deberás retornar la lista [1, 12, 15], ya que esos fueron los días en los que más llovió (40mm).

Si lluvia = [10, 10, 23, 4, 24, 8], entonces deberás retornar la lista [10], ya que es el único día en el que más llovió.

Siendo lluvia una lista

Y como poder hacerlo en el caso en donde hay str además como el siguiente:

Si lluvia_total = ['Enero',1,10,2,5,10,2,'Febrero',4,10,'Abril',1,40,2,14,3,30,6,16, 10,9,11,9,12,40], entonces deberás retornar la lista ['Abril', 158], ya que Abril fue el més en el que más llovió y llovieron en total 158mm.

Si lluvia_total = ['Enero',1,10,'Febrero',4,11,'Abril',1,4], entonces deberás retornar la lista ['Febrero', 11], ya que Febrero fue el mes en el que más llovió y llovieron en total 11 mm.
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con ejercicio de listas

Publicado por tincopasan (1082 intervenciones) el 11/06/2021 06:15:43
es muy fácil, pero intenta algo por lo menos, declara las listas y las funciones y vemos.
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
sin imagen de perfil

Ayuda con ejercicio de listas

Publicado por anonymous (38 intervenciones) el 11/06/2021 06:22:26
Hola si, hice esto:

1
2
3
4
5
6
7
def dias_mas_lluvia(lluvia_mes):]
      maximo  = max(lluvia_mes)
 
      for i in range(len(lluvia_mes)):
            m = [d for d, maximo in enumerate (lluvia_mes) if maximo == lluvia_mes[i]]
 
print(m)

Me da efectivamente la posición pero además otras posiciones que no necesito, sabrías como solucionarlo?? Y como la segunda es muy parecida me quede estancado );
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con ejercicio de listas

Publicado por tincopasan (1082 intervenciones) el 11/06/2021 08:01:57
La verdad que no entiendo tu lógica para resolver el primer punto, así que te muestro como lo haría:

1
2
3
4
5
6
7
8
9
10
11
#-*- coding: utf -8 -*-
lluvia=[1,40,3,30,6,16,10,9,11,9,12,40,15,40]
 
def dias_mas_lluvia(lista):
    temp = [(lista[x],lista[x+1]) for x in range(0,len(lista),2)]
    temp = sorted(temp,key= lambda y: y[1],reverse=True)
    dias=[x[0] for x in temp if x[1] == temp[0][1]]
    return dias
 
 
print(dias_mas_lluvia(lluvia))

Si te fijas deberían ser tuplas o listas de pares,con el día y la cantidad, así que separo la lista en tuplas.
Después las ordeno de mayor a menor según el segundo valor y por último creo una lista donde se ingresaran los días iguales a la cantidad del primer elemento.

y eso es la primer función, ahora ya con eso fijate si podes resolver la segunda, aunque es básicamente el mismo concepto, separar los datos.
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
sin imagen de perfil

Ayuda con ejercicio de listas

Publicado por anonymous (38 intervenciones) el 11/06/2021 12:27:30
Para la otra función solo debería cambiar esta parte??
1
temp = [(lista[x],lista[x+1]) for x in range(0,len(lista),2)], sumándole otro más  lista[x+1+1]
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
sin imagen de perfil

Ayuda con ejercicio de listas

Publicado por anonymous (38 intervenciones) el 11/06/2021 12:55:52
La verdad tincopasan no logro ver como utilizar el código en la segunda función, puesto que además hay strings, no logro separarla para después aplicar la sum() y sacar el valor Máximo de los meses para después retornarlo
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con ejercicio de listas

Publicado por tincopasan (1082 intervenciones) el 11/06/2021 15:00:59
nunca dije que ese código servía para la segunda función! solo para la primera, la que contiene cadenas es mucho más fácil todavía! tu problema está en entender, dije: "aunque es básicamente el mismo concepto, separar los datos." sino podes separar los datos no podés resolver nada.
En la primera solo buscas el segundo valor, en la otra sumas, ¿parece qué tienen que hacer lo mismo ?
da pena tener que poner una respuesta, ya que no entendiste los simple, "SEPARAR LOS DATOS", analizarlos es solo usar los objetos de python.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-*- coding: utf -8 -*-
lluvia_total = ['Enero',1,10,2,5,10,2,'Febrero',4,10,'Abril',1,40,2,14,3,30,6,16, 10,9,11,9,12,40]
 
def total(lista):
    meses={}
    for x in lluvia_total:
        if isinstance(x,str):
            meses.setdefault(x,0)
            mes=x
        else:
            meses[mes]+=x
 
    mayor = max(meses.values())
    mes=list(meses.keys())[list(meses.values()).index(mayor)]
    return[mes,mayor]
 
a,b = total(lluvia_total)
 
print(f"El mes de mayor lluvia fue: {a} con: {b} mm")

Acá sumo todos los valores sin separar en días, solo para mostrarte como se pueden separar las cadenas de los enteros,hace algo vos para terminarla

como dije en la primer respuesta, muy simple
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

Ayuda con ejercicio de listas

Publicado por Joaquin (6 intervenciones) el 11/06/2021 15:17:07
Hola tincopasan, tu función esta totalmente correcta, pero por lo que entendí de la pregunta de Carlos, la suma debería ser numero por medio, puesto que el primer número es el día y el segundo la cantidad de mm que ha llovido, por lo que en tu función estarías sumando todos los valores de enero cuando en realidad sería solo la mitad, o no?? Porque en ese caso sería más difícil lograr el número correcto
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
sin imagen de perfil

Ayuda con ejercicio de listas

Publicado por anonymous (38 intervenciones) el 11/06/2021 16:00:44
Lo siento tincopasan, pero no logro obtener el resultado, correcto se que debería saber como y que tampoco me deberías hacer todo el código, pero estoy recién aprendiendo a usar Python, este ejercicio es para estudiar para un examen que tengo en 2 días, por favor me podrías ayudar??
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con ejercicio de listas

Publicado por tincopasan (1082 intervenciones) el 11/06/2021 16:20:10
bueno, ahí está todo el código, le agregue algo que deberías vos, pero en fin, tendrás un resultado pero sino lo entiendes no avanzaras mucho.
Joaquin:
1
estarías sumando todos los valores de enero cuando en realidad sería solo la mitad, o no?? Porque en ese caso sería más difícil lograr el número correcto

lo hice al propósito a ver si se esmeraba y lo intentaba, pero no.
¿difícil? para nada.

código completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#-*- coding: utf -8 -*-
lluvia_total =  ['Enero',1,10,2,5,10,2,'Febrero',4,10,'Abril',1,40,2,14,3,30,6,16, 10,9,11,9,12,40]
 
def total(lista):
    meses={}
    contador = 0
    for x in lluvia_total:
        if isinstance(x,str):
            meses.setdefault(x,0)
            mes=x
        else:
            if contador % 2 != 0:
                meses[mes]+= x #suma solo el segundo valor
            contador+=1
 
    mayor = max(meses.values())
    mes=list(meses.keys())[list(meses.values()).index(mayor)]
    return[mes,mayor]
 
a,b = total(lluvia_total)
 
print(f"El mes de mayor lluvia fue: {a} con: {b} mm")
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