Python - Problema Lista Recuperar Indice

 
Vista:

Problema Lista Recuperar Indice

Publicado por Joel (4 intervenciones) el 08/12/2017 16:02:29
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
gastos=[]
ventas=[]
total=[]
auxiliar=[]
for A in range(0,5):
    a=int(raw_input("ingrese sucursal: "))
    b=int(raw_input("ingrese ventas: "))
    ventas.append(b)
    c=int(raw_input("ingrese gastos: "))
    gastos.append(c)
    print
for B in range(0,5):
    g=ventas[B]-gastos[B]
    total.append(g)
    auxiliar.append(g)
 
for pasada in range(1,len(total)):
    for posicion in range(len(total)-pasada):
        if total[posicion]>total[posicion+1]:
            aux=total[posicion]
            total [posicion]=total[posicion+1]
            total[posicion+1]=aux
 
for J in range(0,len(auxiliar)):
           if auxiliar[0]==total[J]:
                     total=auxiliar


en este pedacito de codigo yo necesito hacer una comparación de los indices con el vector total y el vector auxiliar, se daran cuenta que el vector total ya esta ordenado y cargado mientras que el vector auxiliar es una copia de los datos originales del vector sin arreglar.
el fin de este programa es volver a tener el indice de el vector original asi poder trabajar con los indices.
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 abzerox
Val: 402
Bronce
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Problema Lista Recuperar Indice

Publicado por abzerox (96 intervenciones) el 09/12/2017 00:35:27
Hola Joel, no queda muy claro lo que intentas hacer, si puedes detalla un poco más.
Entiendo que guardas los gastos y ventas de una sucursal (de la cual solicitas el número pero nunca lo utilizas), luego realizas la diferencias entre los ventas y gastos para obtener un total y por ultimo veo que ordenaste la lista total aplicando el ordenamiento burbuja.
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

Problema Lista Recuperar Indice

Publicado por Joel (4 intervenciones) el 09/12/2017 01:15:06
EL problema en si es el siguiente:
Un negocio que cuenta con 5 sucursales liquida las ganancias del mismo.
Para obtener el valor de ganancia se efectúa la diferencia entre venta - gastos;
los cuales se ingresan por pantalla. Calcular la ganancia de cada sucursal e informar sucursal con mayor ganancia
sucursal con menor ganancia y promedio de ventas al mes.

En si yo ordene el vector para saber el de mayor y el manor ganancia, pero ahora me surge el inconveniente de que quiero informarlo pero con su posicion correspondiente a la que entro, ej: su la sucursal 1 ingreso 12 de ventas y 10 de gastos el resultado quede en la misma posicion asi puedo informar por eso queria hacer una comparacion asi imprimo la sucursal 1 gano " tanto" espero que me pueda ayudar.


Gracias!.
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 abzerox
Val: 402
Bronce
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Problema Lista Recuperar Indice

Publicado por abzerox (96 intervenciones) el 09/12/2017 06:42:56
Ahora si me queda más claro el planteamiento.
Hize mejoras en tu código, en lugar de utilizar una lista para cada valor (ventas, gastos) utilize un diccionario, donde la key corresponde con el número de sucursal generado por cada iteracion del bucle for y el valor es una tupla en el orden (ventas, gastos).
Además utilize algunas funciones de las cuales te dejo las referencias de la documentación oficial para que las estudies.
El código esta comentado pero si hay algo que no entiendes nos escribes.

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
31
32
33
34
from operator import itemgetter
sucursales = {}
for i in range(1, 6):
  print('Sucursal N°: {}'.format(i))
  ventas = int(input('Ingresa las ventas: '))
  gastos = int(input('Ingresa los gastos: '))
  sucursales[i] = (ventas, gastos)
 
liquidacion = []
 
# 1) Calculo la ganancia (ventas - gastos)
for k, v in sucursales.items():
  ganacia = v[0] - v[1]
  liquidacion.append((k, ganacia))
 
# 2) Ordeno por ganacias obtenidas
# Utilizo la función integrada sorted, la cual recibe como primer parámetro
# un objeto iterable (en este caso un diccionario), luego el paráemtro `key` recibe,
# una función, bajo la cual se aplicara el ordenamiento, y por ultimo   
# La función itemgetter del modulo operator recibe un número que indica el campo
# por el cual será ordenado en este caso es el campo 1 (ganacia) , ya que si recuerdas 
# las ganacias se guardan en una tupla (sucursa, ganacia).
# El ultimo argumento `reverse` permite aplicar un orden en reversa, ya que por defecto el orden 
# es ascendente.
liquidacion_ordenada = sorted(liquidacion, key=itemgetter(1), reverse=True)
 
# 3) Compruebo si existen sucursales con las mismas ganancias
sucursales_con_mayores_ganacias = [x[0] for x in liquidacion_ordenada if x[1] == liquidacion_ordenada[0][1]]
sucursales_con_menores_ganacias = [x[0] for x in liquidacion_ordenada if x[1] == liquidacion_ordenada[-1][1]]
 
# 4) Muestro los resultados ordenados por la ganacia obtenida 
print('\nSucursal \t Ganancia')
for x in liquidacion_ordenada:
  print('{} {:>17}'.format(x[0], x[1]))

Puedes probar el código directamente aquí

Referencias:
itemgetter
sorted
list-comprehensions
str.format
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

Problema Lista Recuperar Indice

Publicado por Joel (4 intervenciones) el 09/12/2017 23:11:53
Perfecto!! pero hay un pequeño problema...
si bien el codigo que tu me has modificado ha quedado genial, yo en el mio estoy buscando hacer procesos, si bien es largo
no utilizo para nada funciones, esto es lo que busco.
por eso no he utilizado funciones y solo he enfocado en proceso.
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