Fwd: ayuda!!

Sonia siosss en hotmail.com
Mar Ago 19 01:39:33 CEST 2003


hola de nuevo!

al recorrer las listas como me dijiste y sumar sus numeros para despues
restar su total, ya me funciona.
el problema ahora es q tengo 2 opciones. recorrerla de principio a fin, y de
fin a principio. de principio a fin no hay ningun problema(creo q me da
bien) , pero al hacer lo contrario siempre me da 0 (cero) y no se donde esta
el cambio. simplemente he hecho en vez de:


if ini<=fin: #recorremos la lista de ppio a fin
    while ini<=fin:

      coste_tramo.append(coste[ini]) #costes
      lista_aux.append(tramo[ini]) #tramos
      ini=ini+1

#LO CAMBIO POR ESTO:


else: #recorremos la lista de fin a principio

    while fin>=ini:
      coste_tramo.append(coste[fin]) #costes
      lista_aux.append(tramo[fin]) #tramos
      fin=fin-1

#no se si el problema esta aqui
#por si acaso te mando el enunciado y el problema al completo




#Mediante una lista de 40 numeros , llamada coste_tramo, se representa el
coste en euros de cada uno de los 40 tramos de una autopista. Asi, al
recorrer el tramo i de la autopista tiene un coste de coste_tramo[i] euros.
#Diseña una funcion q, a partir de una lista y 2 numeros de tramos, ini y
fin, calcule el coste de recorrer consecutivamente los tramos de la
autopista q van desde ini hasta fin (ambos inclusive).
#Para ello deberas tener en cuenta las siguientes consideraciones:
# 1-los tramos de la autopista se pueden recorrer en ambos sentidos
# 2-por cada 3 tramos recorridos el mas barato de ellos, sera gratuito

#nota: debes suponer q los numeros de tramos pasados a la funcion , ini y
fin, seran siempre indices validos en la lista

def minimo(lista):  #calcula el minimo de una lista (importe a descontar)
  min=lista[0]
  for i in range(0,len(lista)):
    if lista[i]<min:
      min=lista[i]
  return min


def recorrer(coste,tramo,ini,fin):
  rdo=0
  dto=0
  pago=0
  lista_aux=[] #lista de tramos
  lista_min=[]   #importes q se descontaran
  coste_tramo=[]   #lista de costes

  if ini<=fin: #recorremos la lista de ppio a fin
    while ini<=fin:

      coste_tramo.append(coste[ini]) #costes
      lista_aux.append(tramo[ini]) #tramos
      ini=ini+1
      if len(lista_aux)==3:
        lista_min.append(minimo(coste_tramo)) #gratis
        lista_aux=[]
    for i in coste_tramo:
        pago=pago+i
    for j in lista_min:
        dto=dto+j
    rdo=pago-dto

  else: #recorremos la lista de fin a principio

    while fin>=ini:
      coste_tramo.append(coste[fin]) #costes
      lista_aux.append(tramo[fin]) #tramos
      fin=fin-1
      if len(lista_aux)==3:
        lista_min.append(minimo(coste_tramo)) #gratis
        lista_aux=[]
    for i in coste_tramo:
      pego=pago+i
    for j in lista_min:
        dto=dto+j
    rdo=pago-dto

  print rdo



#programa principal

tramo=[0,1,2,3,4,5,6,7,8,9,10,11,12]
coste=[2,3,2,2,1,2,3,4,4,2,3,3,2]

ini=int(raw_input('Introduce ini: '))
fin=int(raw_input('introduce fin: '))

recorrer(coste,tramo,ini,fin)

#comprobacion:

#recorrido del tramo 10 al tramo 4= 15 euros
#recorrido del tramo 4 al tramo 10= 16 euros




----- Original Message -----
From: Chema Cortés <ch3m4 en ch3m4.org>
To: <python-es en aditel.org>
Sent: Monday, August 18, 2003 7:55 AM
Subject: [Python-es] Re: Fwd: ayuda!!


> Germán escribió:
> > Uff. Creo que tienes un poco de lio con el uso de 'for'.
> >
> > Para ir cogiendo cada uno de los elementos de una lista basta con hacer
> > 'for valor in lista', por ejemplo:
> >
> >   lista = ['hola',4,9.2,'bye']
> >   for valor in lista:
> >     print valor
> >
> > El problema que planteas yo lo haria asi:
> >
> >   # Obtenemos la suma de lista_min
> >   suma_lm = 0
> >   for v in lista_min:
> >     suma_lm = suma_lm + v
> >
> >   # Obtenemos la suma de suma_ct
> >   suma_ct = 0
> >   for v in coste_tramo:
> >     suma_ct = suma_ct + v
> >
> >   # Imprimimos la diferencia
> >   print suma_ct - suma_lm
>
> Aunque está bien, yo lo haría así:
>
> print sum(coste_tramo) - sum(lista_min)
>
>
>
> Lo siento, no he podido resistirme :-))
> Hay que aprovecharse de las facilidades.
>
>
>


----------------------------------------------------------------------------
----


_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es



----- Original Message -----
From: Chema Cortés <ch3m4 en ch3m4.org>
To: <python-es en aditel.org>
Sent: Monday, August 18, 2003 7:55 AM
Subject: [Python-es] Re: Fwd: ayuda!!


> Germán escribió:
> > Uff. Creo que tienes un poco de lio con el uso de 'for'.
> >
> > Para ir cogiendo cada uno de los elementos de una lista basta con hacer
> > 'for valor in lista', por ejemplo:
> >
> >   lista = ['hola',4,9.2,'bye']
> >   for valor in lista:
> >     print valor
> >
> > El problema que planteas yo lo haria asi:
> >
> >   # Obtenemos la suma de lista_min
> >   suma_lm = 0
> >   for v in lista_min:
> >     suma_lm = suma_lm + v
> >
> >   # Obtenemos la suma de suma_ct
> >   suma_ct = 0
> >   for v in coste_tramo:
> >     suma_ct = suma_ct + v
> >
> >   # Imprimimos la diferencia
> >   print suma_ct - suma_lm
>
> Aunque está bien, yo lo haría así:
>
> print sum(coste_tramo) - sum(lista_min)
>
>
>
> Lo siento, no he podido resistirme :-))
> Hay que aprovecharse de las facilidades.
>
>
>


----------------------------------------------------------------------------
----


_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es