[Python] - El más cercano al primero

Iniciado por ChicoMaravilla, 3 Diciembre 2010, 14:47 PM

0 Miembros y 2 Visitantes están viendo este tema.

ChicoMaravilla

Buenas a todos, tengo otra duda, es sobre este ejercicio:

· 83 Diseña un programa que, dados cinco n´umeros enteros, determine cual de los cuatro
ultimos numeros es mas cercano al primero. (Por ejemplo, si el usuario introduce los n´umeros
2, 6, 4, 1 y 10, el programa respondera que el numero mas cercano al 2 es el 1.)
mi pregunta:¿ hay algún comando de aproximación o algún método para resolver esto?


Novlucker

Hay maneras de hacerlo sencillo, pero creo que lo que te pide el ejercicio es para que lo hagas con condicionales y tal vez bucles.

[offtopic]
Se nota que copias y pegas los textos de un pdf porque los acentos salen mal, y los códigos no tengo idea, pero vienen preformateados con tablas y demás, y salen horribles :xD Verifica que los códigos solo ventan entre etiquetas [code=python][/code]
[/offtopic]

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

ChicoMaravilla

ok, si no sabia porque me salían mal los tildes   :silbar: , gracias por la respuesta inmediata  ::)

ChicoMaravilla

#3
aquí les dejo mi solución.

PD: perdónenme que no les conteste tan rápido pero recién me fije el PM de casualidad

EL EJERCICIO DECÍA QUE UTILIZARA LOS "IF", PERO... ME PASE UN POQUITO JEJEJ
LO RE INSCRIBÍ, Y CREE UN MONSTRUO

CRÉDITOS: SOLO PARA MI   ;D

me mate haciéndolo y me reeeeee queme la cabeza ajaja uuuuuuuuuuffff alfiiiin aleluyaaaaaaaa y aca les dejo MI HIJO:

Código (python) [Seleccionar]
#-------------------------------------------------------------------------------
# Name:        VALOR CERCANO
# Purpose:
#
# Author:      Lucas_Solymar
#
# Created:     04/12/2010
# Copyright:   (c) Administrador 2010
# Licence:     <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python

numero1=int(input("DAME UN NUMERO"))
numero2=int(input("DAME OTRO NUMERO"))
numero3=int(input("DAME OTRO NUMERO"))
numero4=int(input("DAME OTRO NUMERO"))
numero5=int(input("DAME OTRO NUMERO"))
rango=0
print "Los valores son",numero1,numero2,numero3,numero4,numero5
if numero2<numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango1<rango2:
           if rango1<rango3:
               if rango1<rango4:
                   numero=2
   if rango2<rango3:
           if rango2<rango4:
               if rango2<rango1:
                   numero=3
   if rango3<rango4:
           if rango3<rango1:
               if rango3<rango2:
                   numero=4
   if rango4<rango1:
           if rango4<rango2:
               if rango4<rango3:
                   numero=5
if numero3<numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango1<rango2:
           if rango1<rango3:
               if rango1<rango4:
                   numero=2
   if rango2<rango3:
           if rango2<rango4:
               if rango2<rango1:
                   numero=3
   if rango3<rango4:
           if rango3<rango1:
               if rango3<rango2:
                   numero=4
   if rango4<rango1:
           if rango4<rango2:
               if rango4<rango3:
                   numero=5
if numero4<numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango1<rango2:
           if rango1<rango3:
               if rango1<rango4:
                   numero=2
   if rango2<rango3:
           if rango2<rango4:
               if rango2<rango1:
                  numero=3
   if rango3<rango4:
           if rango3<rango1:
               if rango3<rango2:
                   numero=4
   if rango4<rango1:
           if rango4<rango2:
               if rango4<rango3:
                   numero=5
if numero5<numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango1<rango2:
           if rango1<rango3:
               if rango1<rango4:
                   numero=2
   if rango2<rango3:
           if rango2<rango4:
               if rango2<rango1:
                   numero=3
   if rango3<rango4:
           if rango3<rango1:
               if rango3<rango2:
                   numero=4
   if rango4<rango1:
           if rango4<rango2:
               if rango4<rango3:
                   numero=5
if numero2>numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango1>rango2:
           if rango1>rango3:
               if rango1>rango4:
                   numero=2
if numero3>numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango2>rango1:
           if rango2>rango3:
               if rango2>rango4:
                   numero=3
if numero4>numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango3>rango1:
           if rango3>rango2:
               if rango3>rango4:
                   numero=4
if numero5>numero1:
   rango1=numero1 - numero2
   rango2=numero1 - numero3
   rango3=numero1 - numero4
   rango4=numero1 - numero5
   if rango4>rango1:
           if rango4>rango2:
               if rango4>rango4:
                   numero=5


print "El valor ",numero,"es el mas sercano al primero"


a diferencia de otros, este acepta números mayores y menos que el valor inicial.

materiales:
-una hora
-mucha lógica

y me quede super contento de que lo termine XD
lo hice bien completito, para que pueda abarcar todas las posibilidades.

el script lo que hace es mostrar la lista que colocaste en orden de como los has escrito, y luego te dice que por ejemplo el numero 2 es el más cercano, o cea que el 2º valor que colocaste sera el indicado


PD: LEGIBILIDAD 0%
si me preocupaba en eso, no terminaba más


Novlucker

CitarPD: perdónenme que no les conteste tan rápido pero recién me fije el PM de casualidad
Te envié el PM porque quería asegurarme de que lo hubieses hecho, cosa de la que desconfiaba :P

Citarme mate haciéndolo y me reeeeee queme la cabeza ajaja uuuuuuuuuuffff alfiiiin aleluyaaaaaaaa y aca les dejo MI HIJO:
CitarPD: LEGIBILIDAD 0%
si me preocupaba en eso, no terminaba más

Me alegro que lo hayas hecho tú, eso es fundamental, no importa si no es de la manera correcta o si se puede hacer mejor o más legible, la cuestión es que puedas razonarlo y que le encuentres una lógica por ti mismo, con eso es suficiente ;D

Otra cosa, estas programando en Python 3? Porque si es de la rama 2.x no es necesario hacer int, el input de por si es para números :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

ChicoMaravilla

Cita de: Novlucker en  5 Diciembre 2010, 03:39 AM
Te envié el PM porque quería asegurarme de que lo hubieses hecho, cosa de la que desconfiaba :P

Me alegro que lo hayas hecho tú, eso es fundamental, no importa si no es de la manera correcta o si se puede hacer mejor o más legible, la cuestión es que puedas razonarlo y que le encuentres una lógica por ti mismo, con eso es suficiente ;D

Otra cosa, estas programando en Python 3? Porque si es de la rama 2.x no es necesario hacer int, el input de por si es para números :P

Saludos


::) , el int lo pongo de no se que.  Me resulta más comodo utilizar pyscripter, se los recomiendo, esta bueno. y Gracias Novlucker por tus palabras ;)

[L]ord [R]NA

Solo una pequeña correccion, si utilizas iteraciones podrias economizar muchas lineas y otras muchas mas si entiendes verdaderamente el problema antes de empezar a programar, aparte de eso tambien economizarias espacio en memoria.

Código (python) [Seleccionar]
#!/usr/bin/env python
a=input("Ingresa un numero: ")
d=input("Ingresa otro numero: ")
c=abs(d-a)   

for i in range(0,3):
    b = input("Ingresa otro numero: ")
    if c>abs(b-a):
        c=abs(b-a)
        d=b
       
print "el numero mas cercano a "+str(a)+" es "+str(d)

Novlucker

Lo que pasa es que para llegar al for aún le quedan 16 páginas :xD

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

[L]ord [R]NA

Cita de: Novlucker en  6 Diciembre 2010, 10:30 AM
Lo que pasa es que para llegar al for aún le quedan 16 páginas :xD

Saludos

igual necesita la distancia absoluta entre un numero y otro y no la calcula... por lo tanto dara resultados erroneos... y aun me apego a que tendria que sentarse a mirar bien el problema antes de pasarlo ya a un lenguaje de programacion.

Código (python) [Seleccionar]
#!/usr/bin/env python
a=input("Ingresa un numero: ")
d=input("Ingresa otro numero: ")
c=abs(d-a)   

b = input("Ingresa otro numero: ")
if c>abs(b-a):
    c=abs(b-a)
    d=b

b = input("Ingresa otro numero: ")
if c>abs(b-a):
    c=abs(b-a)
    d=b
       
b = input("Ingresa otro numero: ")
if c>abs(b-a):
    c=abs(b-a)
    d=b
       
print "el numero mas cercano a "+str(a)+" es "+str(d)

Novlucker

Ups es verdad, el problema es que siempre me marca como más cercano el primer número, lo cual es lógico pero no válido :xD

Por otra parte si te fijas, el hizo algo similar sin usar abs, por eso tiene las restas y los mayores/menores para un lado y para el otro

¿Podrías hacerlo solo con if? :xD

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein