Ese no es un problema de python, es más de programación básica y lógica!
Me atrevo a recomendarte un método para resolver estos problemas: lápiz y papel.
Pensá qué te están pidiendo, y cómo lo resolverías. Luego lo reescribís para que se vaya pareciendo a la estructura de un programa.
Ejemplo:
"Diseña un programa que, dados cinco numeros enteros, determine cual de los cuatro ultimos numeros es mas cercano al primero. (Por ejemplo, si el usuario introduce los numeros 2, 6, 4, 1 y 10, el programa respondera que el numero mas cercano al 2 es el 1."
Primera escritura:
Paso 1. observar el primero.
Paso 2. comparar los demás
Paso 3. quedarme con el que sea más cercano
Segunda escritura:
Paso 1. guardar el primero en una variable
Paso 2. comparar cada uno de los otros con el que guardé
Paso 3. Quedarme con el número tal que su diferencia con 1 es menor que la de los demás.
Tercera escritura, ya con forma de programa:
1.- Recibo una lista de números
2.- obtengo el primero
3.- para cada elemento de la lista (quitando el primero), lo resto al primero
4.- devolver aquel cuya diferencia sea menor.
Faltan definir los puntos 3 y 4: ¿cómo sé cuál tiene la menor resta? la forma sencilla es mantener una segunda variable que tenga el valor del elemento que me interesa.
Hasta ahora, lo anterior se puede traducir en:
Código python:
Ver originallista = [ 1, 5, 6, 7, 8, 3, 2 ]
primero = lista[0]
for i in lista[1:]:
diferencia = i - primero
???
print "El más cercano es", mas_cercano
Falta un valor inicial para
mas_cercano. Una forma sencilla sería poner el segundo elemento de la lista como
mas_cercano inicial, y de paso realizar de forma sencilla el caso en el que la lista tiene largo 2:
Código python:
Ver originallista = [ 1, 5, 6, 7, 8, 3, 2 ]
primero = lista[0]
mas_cercano = lista[1]
for i in lista[2:]:
if (i - primero) < (mas_cercano - primero):
mas_cercano = i
print "El más cercano es", mas_cercano
Falta resolver el asunto de que la condición del IF puede fallar en algunos casos, quizás quieras (
)investigar sobre la función
abs (valor absoluto)
Saludos.