Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 10 Octubre 2010, 20:45 pm



Título: [Python] - Número cerca.
Publicado por: Meta en 10 Octubre 2010, 20:45 pm
Buenas:

Programa que, dados cinco números enteros, determine cuál de los cuatro últimos nº es más cercano al primero. (Por ejemplo, si el usuario introduce los números 2, 6, 4, 1 y 10, el programa responderá que el número más cercano al 2 es el 1.).

Se me resiste hacer este ejercicio. Lo hice así pero no me funciona, ¿una ayudita?

Código
  1. n1 = int(raw_input('Ingresa el primer número: '))
  2. n2 = int(raw_input('Ingresa el segundo número: '))
  3. n3 = int(raw_input('Ingresa el tercer número: '))
  4. n4 = int(raw_input('Ingresa el cuarto número: '))
  5. n5 = int(raw_input('Ingresa el quinto número: '))
  6.  
  7. z2 = n2 - n1
  8. z3 = n3 - n1
  9. z4 = n4 - n1
  10. z5 = n5 - n1
  11.  
  12. numero = abs(z2)
  13.  
  14. if abs(numero) == abs(z2):
  15.    numero = abs(n2)
  16. if abs(numero) == abs(z3):
  17.    numero = abs(n3)
  18. if abs(numero) == abs(z4):
  19.    numero = abs(n4)
  20. if abs(numero) == abs(z5):
  21.    numero = abs(n5)
  22.  
  23. print "El número %d es más cercano al %d." % (n1, numero)
  24.  
  25. # En el Cap-2 del PDF, 2.6. Funciones predefinidas explica abs(-3).

Saludo.


Título: Re: [Python] - Número cerca.
Publicado por: Shell Root en 10 Octubre 2010, 21:30 pm
no entiendo esto, supongo que es para ver el menor resultado.
Código
  1. z2 = n2 - n1
  2. z3 = n3 - n1
  3. z4 = n4 - n1
  4. z5 = n5 - n1

Después tocará verificar cual es el número menor, verdad?


Título: Re: [Python] - Número cerca.
Publicado por: [L]ord [R]NA en 10 Octubre 2010, 22:38 pm
Lee el enunciado nuevamente, no estas haciendo nada como te lo piden.


Título: Re: [Python] - Número cerca.
Publicado por: Meta en 10 Octubre 2010, 23:53 pm
Es loq ue estoy iintentando hacer pero no me sale.


Título: Re: [Python] - Número cerca.
Publicado por: [L]ord [R]NA en 11 Octubre 2010, 02:54 am
En ningun lugar veo que compares cual es mayor que otro o menor.


Título: Re: [Python] - Número cerca.
Publicado por: Meta en 11 Octubre 2010, 04:13 am
Código
  1. n1 = int(raw_input('Ingresa el primer número: '))
  2. n2 = int(raw_input('Ingresa el segundo número: '))
  3. n3 = int(raw_input('Ingresa el tercer número: '))
  4. n4 = int(raw_input('Ingresa el cuarto número: '))
  5. n5 = int(raw_input('Ingresa el quinto número: '))
  6.  
  7. z2 = n2 - n1
  8. z3 = n3 - n1
  9. z4 = n4 - n1
  10. z5 = n5 - n1
  11.  
  12. numero = abs(z2)
  13.  
  14. if abs(numero) <= abs(z2):
  15.    numero = abs(n2)
  16. if abs(numero) <= abs(z3):
  17.    numero = abs(n3)
  18. if abs(numero) <= abs(z4):
  19.    numero = abs(n4)
  20. if abs(numero) <= abs(z5):
  21.    numero = abs(n5)
  22.  
  23. print "El número %d es más cercano al %d." % (n1, numero)
  24.  
  25.  

Ingresa el primer número: 2
Ingresa el segundo número: 4
Ingresa el tercer número: 5
Ingresa el cuarto número: 6
Ingresa el quinto número: 7
El número 2 es más cercano al 6.

Ya lo puse y su resultado es raro.


Título: Re: [Python] - Número cerca.
Publicado por: [L]ord [R]NA en 11 Octubre 2010, 04:36 am
Estas realizando mal la comparacion no puedes comparar 'numero' con una de las 'z'... otra cosa, piensa un poquito en el enunciado del problema y veras que no necesitas tantas variables. Solo te piden el mas cercano, ningun otro... entonces para que lo almacenas?


Título: Re: [Python] - Número cerca.
Publicado por: JCDedalus en 11 Octubre 2010, 04:36 am
Recuerda que puedes usar la función "elif" para ahorrarte algo de código y agregar más de una condición al IF o ELIF de la sieguiente forma:

Código:
If a>b and a>c and a>x:
print 'De este modo haces que algo solo se ejecute cuando cumple una serie de condiciones'


Título: Re: [Python] - Número cerca.
Publicado por: [L]ord [R]NA en 11 Octubre 2010, 04:43 am
JCDedalus la idea era que el la hiciera, pero si tu codigo no soporta los negativos aun esta mal.