[Python] - Número cerca.

Iniciado por Meta, 10 Octubre 2010, 20:45 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

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 (python) [Seleccionar]
n1 = int(raw_input('Ingresa el primer número: '))
n2 = int(raw_input('Ingresa el segundo número: '))
n3 = int(raw_input('Ingresa el tercer número: '))
n4 = int(raw_input('Ingresa el cuarto número: '))
n5 = int(raw_input('Ingresa el quinto número: '))

z2 = n2 - n1
z3 = n3 - n1
z4 = n4 - n1
z5 = n5 - n1

numero = abs(z2)

if abs(numero) == abs(z2):
   numero = abs(n2)
if abs(numero) == abs(z3):
   numero = abs(n3)
if abs(numero) == abs(z4):
   numero = abs(n4)
if abs(numero) == abs(z5):
   numero = abs(n5)

print "El número %d es más cercano al %d." % (n1, numero)

# En el Cap-2 del PDF, 2.6. Funciones predefinidas explica abs(-3).


Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

#1
no entiendo esto, supongo que es para ver el menor resultado.
Código (python) [Seleccionar]
z2 = n2 - n1
z3 = n3 - n1
z4 = n4 - n1
z5 = n5 - n1


Después tocará verificar cual es el número menor, verdad?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

[L]ord [R]NA

Lee el enunciado nuevamente, no estas haciendo nada como te lo piden.

Meta

Es loq ue estoy iintentando hacer pero no me sale.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

[L]ord [R]NA

En ningun lugar veo que compares cual es mayor que otro o menor.

Meta

Código (python) [Seleccionar]
n1 = int(raw_input('Ingresa el primer número: '))
n2 = int(raw_input('Ingresa el segundo número: '))
n3 = int(raw_input('Ingresa el tercer número: '))
n4 = int(raw_input('Ingresa el cuarto número: '))
n5 = int(raw_input('Ingresa el quinto número: '))

z2 = n2 - n1
z3 = n3 - n1
z4 = n4 - n1
z5 = n5 - n1

numero = abs(z2)

if abs(numero) <= abs(z2):
    numero = abs(n2)
if abs(numero) <= abs(z3):
    numero = abs(n3)
if abs(numero) <= abs(z4):
    numero = abs(n4)
if abs(numero) <= abs(z5):
    numero = abs(n5)

print "El número %d es más cercano al %d." % (n1, numero)



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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

[L]ord [R]NA

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?

JCDedalus

#7
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:

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'
Todo lo que es comprendido está bien.
"We.....Are.....One"

[L]ord [R]NA

JCDedalus la idea era que el la hiciera, pero si tu codigo no soporta los negativos aun esta mal.