Python - Obtener las 3 personas que más gastaron

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

Obtener las 3 personas que más gastaron

Publicado por Aldo Quelopana (18 intervenciones) el 14/02/2021 04:19:20
Un banco está interesado en premiar a sus mejores clientes, y para eso nos ha entregado una serie de valores que corresponden a los nombres y total de gastos de todos sus clientes. Crea un diagrama con un algoritmo que permita leer desde el teclado la serie de nombres y gastos, e entregue el nombre de las 3 personas que más gastaron. Ellos serán los ganadores de un premio especial por parte del banco.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
nombre = input("Ingrese nombre: ")
m1 = -1
m2 = -1
m3 = -1
 
NombreM =""
 
while nombre != "fin":
    gastos = int(input("Ingrese gastos: "))
    if gastos > m1:
        m3 = m2
        m2 = m1
        m1 = gastos
        NombreMMM = nombre
    else:
        if gastos > m2:
            m3 = m2
            m2 = gastos
            NombreMM = nombre
        else:
            if gastos > m3:
                m3 = gastos
                NombreM = nombre
 
    nombre = input("Ingrese nombre: ")
 
print(NombreMMM)
print(NombreMM)
print(NombreM)

El problema de este código que escribí es que el tercer nombre(NombreM) no me copia el nombre con el valor. Alguien me puede ayudar
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 joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Obtener las 3 personas que más gastaron

Publicado por joel (901 intervenciones) el 14/02/2021 09:54:55
Hola Aldo, esta manera que estas utilizando, no es muy correcta, ya que imagínate que te solicitan los 20 primeros...

Una manera, es llenar una lista o diccionario con los nombre y gasto de cada persona, luego ordenarlos y mostrarlos.

Haber si te sirve este ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
personas=[]
nombre=""
 
while True:
    nombre = input("Ingrese nombre: ")
    if nombre=="fin":
        break
    gastos = int(input("Ingrese gastos: "))
    personas.append([nombre, gastos])
 
# ordenamos el array bidimensional por el gasto
personas.sort(key=lambda x: x[1], reverse=True)
for i in range(3):
    if len(personas)>i:
        print(personas[i])
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: 49
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Obtener las 3 personas que más gastaron

Publicado por Aldo (18 intervenciones) el 14/02/2021 13:07:27
Muchas gracias estimado por la respuesta y la ayuda. Lo tomaré en cuenta, sin embargo, como estaba empezando el curso, creo que estamos en la parte básica, en donde, estoy aprendiendo a degradar el valor y copiar del valor más alto mayor hasta el más bajo mayor, con tal de, obtener solamente los 3 nombre de los clientes que gastaron lo mayor. En ese sentido, el código iba por el camino que mostraba sin embargo, como no es correcto porque no me resulta lo que quiero. Aun así, te agradezco el tiempo. Ahora bien, si puedes ayudarme con la forma en la estaba haciendo sería bien recibido igual estimado. Espero una respuesta.

El algoritmo es similar a este ejemplo que está explicado para dos valores. El programa debe mostrar por pantalla, tal cual muestra en la imagen, pero utilizando la lógica del algoritmo.

Algoritmo
programa
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
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Obtener las 3 personas que más gastaron

Publicado por joel (901 intervenciones) el 14/02/2021 13:38:54
Entiendo Aldo... haber si te sirve así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
nombre = input("Ingrese nombre: ")
m1 = -1
m2 = -1
m3 = -1
 
NombreM = NombreMM = NombreMMM = ""
 
while nombre != "fin":
    gastos = int(input("Ingrese gastos: "))
    if gastos > m1:
        m3 = m2
        m2 = m1
        m1 = gastos
        NombreMMM = NombreMM
        NombreMM = NombreM
        NombreM = nombre
    elif gastos > m2:
        m3 = m2
        m2 = gastos
        NombreMMM = NombreMM
        NombreMM = nombre
    elif gastos > m3:
        m3 = gastos
        NombreMMM = nombre
 
    nombre = input("Ingrese nombre: ")
 
print(NombreM)
print(NombreMM)
print(NombreMMM)
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: 49
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Obtener las 3 personas que más gastaron

Publicado por Aldo (18 intervenciones) el 14/02/2021 13:51:45
Muchísimas gracias estimado, funciona a la perfección, creo que tuve pequeñas diferencias, falta de experiencia en el manejo de python
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: 49
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Obtener las 3 personas que más gastaron

Publicado por Aldo (18 intervenciones) el 14/02/2021 14:23:38
Otra consulta estimado. Yo ya implementé el programa 12 y funciona, pero sin embargo, al realizar la modificación para que muestre por pantalla los 3 mayores, no me resulta, podrías orientarme en qué, podría falta en el código de la imagen, por favor.
top-3
Algoritmo
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
Imágen de perfil de Xavi
Val: 666
Bronce
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Obtener las 3 personas que más gastaron

Publicado por Xavi (47 intervenciones) el 14/02/2021 19:06:16
Hola Aldo, puedes pegar el código en vez de poner una imagen?

Estaría bien que cada duda nueva abrieras un nuevo hilo en los foros... de esta manera es mas sencilla de seguir
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