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