Foros del Web » Programando para Internet » Python »

me podrian ayudar?

Estas en el tema de me podrian ayudar? en el foro de Python en Foros del Web. Hola estaba haciendo una tarea que me dejaron sobre pyhon y no caigo como puedo resolver los siguientes programas... Se que es algo con las ...
  #1 (permalink)  
Antiguo 01/09/2010, 05:00
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
me podrian ayudar?

Hola estaba haciendo una tarea que me dejaron sobre pyhon y no caigo como puedo resolver los siguientes programas... Se que es algo con las senencias condicionales (if, else, elif) pero no me doy cuena... me podrian dar una mano?
esos son los ejercicios..
Desde ya muchas gracias

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.

Diseña un programa que, dados cinco puntos en el plano, determine cual de los cuatro ultimos puntos es mas cercano al primero. Un punto se representara con dos variables: una para la abcisa y otra para la ordenada. La distancia entre dos puntos (x1, y1) y (x2, y2) es: sqrt((x1 − x2)**2 + (y1 − y2)**2))
  #2 (permalink)  
Antiguo 01/09/2010, 11:24
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: me podrian ayudar?

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 original
  1. lista = [ 1, 5, 6, 7, 8, 3, 2 ]
  2. primero = lista[0]
  3. for i in lista[1:]:
  4.     diferencia = i - primero
  5.     ???
  6.  
  7. 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 original
  1. lista = [ 1, 5, 6, 7, 8, 3, 2 ]
  2. primero = lista[0]
  3. mas_cercano = lista[1]
  4. for i in lista[2:]:
  5.     if (i - primero) < (mas_cercano - primero):
  6.         mas_cercano = i
  7.  
  8. 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.
  #3 (permalink)  
Antiguo 01/09/2010, 12:04
Avatar de josej30  
Fecha de Ingreso: noviembre-2008
Ubicación: Caracas, Venezuela
Mensajes: 61
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: me podrian ayudar?

Jajaja Alvaro le dijiste toda la respuesta xD

Ezequiel29.. Esa no es la forma correcta de hacer las cosas.. Tienes que sentarte tu primero a hacer tu tarea y no esperar a que los demás miembros del foro la hagan por ti. Eso de "estaba haciendo una tarea " suena a que simplemente quieres que nosotros te resolvamos tus ejercicios.

Piensa un poco con lo que te explicó Alvaro y regresa luego con una pregunta más concreta, porque de esta manera no vas a aprender nada :S

Ánimos!
  #4 (permalink)  
Antiguo 01/09/2010, 12:09
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: me podrian ayudar?

Cita:
Iniciado por josej30 Ver Mensaje
Jajaja Alvaro le dijiste toda la respuesta xD
No, el primer ejercicio no está completo y falta el segundo
  #5 (permalink)  
Antiguo 01/09/2010, 12:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: me podrian ayudar?

Debo de admitir que siempre que llegan problemas simples como estos, es difícil resistirse a no contestarles. Y acabas haciendo (sin querer) todo el problema.
  #6 (permalink)  
Antiguo 01/09/2010, 12:18
Avatar de josej30  
Fecha de Ingreso: noviembre-2008
Ubicación: Caracas, Venezuela
Mensajes: 61
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: me podrian ayudar?

Si bueno.. Pero hay que explicarle que no puede ir por la vida pidiendo la solución de sus problemas a todo el mundo sin antes haber aunque sea analizado un poco el asunto...

Aunque esto fue literalmente un copy & paste del enunciado que le colocó el profesor
  #7 (permalink)  
Antiguo 01/09/2010, 13:12
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: me podrian ayudar?

ey ey che, no es an asi loco, use este foro poco y nada, es mas diganme donde vieron oro post con mi nombre?.... por otro lado obvio que fue un copy and paste, no me voy a poner a escribir todo el problema de nuevo ¬¬. Yo queria saber nada mas como mierda empezar nada mas o que consejos me podrian dar, algo asi como lo que hizo alvaro. Aun asi agradesco a odos ya que por lo menos comenaron el post.. Nadie les pidio que hagan mi area... y en odo caso el titulo del post es bien claro.. me PODRIAN ayudar?...

Muchas gracias todos :)
  #8 (permalink)  
Antiguo 01/09/2010, 13:43
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: me podrian ayudar?

Tranquilo, Ezequiel.
Tenés que considerar algunas reglas de convivencia que tenemos en FdW, que no están en las políticas del sitio ni serán causal de infracción pero que con el tiempo se han consolidado y que los "forosdelweberos" esperamos encontrar.
Dos que se aplican en este caso son:

- Ponerle al tema un título descriptivo
- Intentar solucionar el problema o la tarea y llegar al foro con algo que hayas intentado y no funcione, en vez de un pedido de ayuda general.

En todos los foros de esta comunidad te encontrarás con respuestas similares si no se cumplen estas reglas, y por el contrario encontrarás respuestas mucho mejores si se cumplen.
Pensá en cuál sería tu reacción si alguien te preguntara de la misma forma (no una vez aislada sino muchas veces), y allí verás el por qué de quienes responden esperen ciertas actitudes de parte de la gente que pregunta.

Sin acritud.

Saludos.
  #9 (permalink)  
Antiguo 01/09/2010, 14:00
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: me podrian ayudar?

a = int(raw_input("Dame un numero: "))
b = int(raw_input("Dame un numero: "))
c = int(raw_input("Dame un numero: "))
d = int(raw_input("Dame un numero: "))
e = int(raw_input("Dame un numero: "))

y2 = b - a
y3 = c - a
y4 = d - a
y5 = e - a

candidato = y2

if candidato > y3:
candidato = y3
if candidato > y4:
candidato = y4
if candidato > y5:
candidato = y5


if candidato == y2:
masCerca = b
if candidato == y3:
masCerca = c
if candidato == y4:
masCerca = d
if candidato == y5:
masCerca = e

print "El numero mas cercano es %d" % masCerca


esa es el programa que yo habia hecho, pero no se cumple en odos los casos... por ejemplo.. en el caso de poner la secuencia que esa de ejemplo, me da correco el resultado, pero si pongo otros numero por ejemplo 8, 11, 66, 9 y 1 me da que el mas cercano es 1 cuando en realidad deberia ser 9.. ese es el problema... y iene que ser si o si con secuencias condicionales... nada de for in o algo asi...
  #10 (permalink)  
Antiguo 01/09/2010, 14:21
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: me podrian ayudar?

El problema es el mismo por el que te recomendaba antes revisar la función abs(), para obtener el valor absoluto de la resta.

Si a=8, b=9, c=1, tenés:
y2 = b - a = 1
y3 = c - a = -7

obviamente y3 es el menor. Usando abs(-7) => 7, 7 > 1.
  #11 (permalink)  
Antiguo 01/09/2010, 19:10
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: me podrian ayudar?

ahi esa, ahi funciono.... solo eso me faltaba... Gracias alvaro, por ser el unico en ayudarme... Quiza ustedes sean todos ingenieros o analizas en sisemas, pero yo soy solo un esudiane... y por mas que me esfuerze y ese horas pensando un problema, a veces los esudianes necesitamos quien nos guie.. quien nos de un"empujoncito" por asi decirlo... jaja Y vuelvo a reptetir, nadie les pidio que resolvieran los ejercicios.... yo solo los pegue ahi para que vean como era y de que se trataba.... gracias por comprender... Saludos a todos :)
  #12 (permalink)  
Antiguo 01/09/2010, 22:50
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: me podrian ayudar?

De hecho este problema se puede generalizar:

Dado un punto en la dimensión R^n y una lista con k puntos. Encuentre los 2 elementos mas cercanos al punto dado.

Por que abs(x1 - x2) es como hacer un sqrt((x1 - x2) ** 2).
Sacar la distancia en 2 dimensiones es sqrt((x1 - x2)**2 + (y1 - y2)**2)
Sacar la distancia en 3 dimensiones es sqrt((x1 - x2)**2 + (y1 - y2)**2 + (z1 - z2)**2)
Así sucesivamente para n dimensiones.

@Ezequiel29 yo también soy alumno y procuro hacer mi tarea por mi cuenta.
  #13 (permalink)  
Antiguo 01/09/2010, 23:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: me podrian ayudar?

Ezequiel,
Creo que aquí nadie se autoproclamó profesional ni sabio, el tema va más allá del problema puntual y, como te comenté antes, tiene que ver con lo que quienes responden esperan de quienes preguntan.
Ponte en lugar de quien recibe la consulta. Imaginate que hacés la misma pregunta en el "mundo real". Creo que es clarísimo que lo primero que te pedirá alguien a quien preguntes ¡es lo que lleves resuelto sobre el problema! Así no perdés tiempo vos escuchando explicaciones sobre lo que ya sabés, ni pierde tiempo el que contesta sugiriendo soluciones que no funcionan, que ya probaste, o que no aplican.

Nada, que todos fuimos principiantes pero la realidad enseña que para que alguien pase trabajo tratando de contestar, vos tenés que pasar algo de trabajo creando una pregunta correcta.
Son muchos los que vienen al foro a pedir que se les haga la tarea, sin comprender que los que estamos por acá estamos porque nos gusta, teniendo ademas trabajo o estudio que atender, y no resulta atractivo donar tiempo a solucionar un problema cuyo propio dueño no parece demostrar el suficiente interés como para plantearlo en condiciones o intentar resolverlo por su cuenta.
No digo que sea tu caso porque en tu respuesta demostraste que sí habías intentado solucionar el problema y que lo que te faltaba era algo muy puntual. La próxima vez, recordá poner el código que tengas ya en tu primer mensaje, y no volverás a tener inconvenientes como este.


Saludos.
  #14 (permalink)  
Antiguo 02/09/2010, 11:32
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: me podrian ayudar?

razpetia me dieron 20 ejercicios para hacer, lo hice a odos, nada mas que esos dos, como puedes ver.. su resolucion se hacia de la misma forma... todos preocuramos hacer nuesras area.. yo pedi AYUDA, no que me hagan las cosas... Para la proxcim preguno de otra forma y les copio el programa ya avanzado.. :)
  #15 (permalink)  
Antiguo 02/09/2010, 13:10
Avatar de josej30  
Fecha de Ingreso: noviembre-2008
Ubicación: Caracas, Venezuela
Mensajes: 61
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: me podrian ayudar?

Perfecto, si es así de esa manera muchas más personas estarán dispuestas a ayudarte porque habrás demostrado que has puesto de tu parte para resolver el problema..

Saludos!
__________________
Análisis, tips, noticias e información relacionada con el desarrollo Web
http://www.topicosweb.com
  #16 (permalink)  
Antiguo 07/10/2010, 22:25
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 729
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: me podrian ayudar?

Hice uno similar al tuyo pero no me funciona. Mira que estaba horas investigadno pero no.

Código Python:
Ver original
  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 = abs(n2) - abs(n1)
  8. z3 = abs(n3) - abs(n1)
  9. z4 = abs(n4) - abs(n1)
  10. z5 = abs(n5) - abs(n1)
  11.  
  12. numero = abs(z2)
  13.  
  14. if abs(numero) == abs(z2):
  15.     numero = abs(z2)
  16. if abs(numero) == abs(z3):
  17.     numero = abs(z3)
  18. if abs(numero) == abs(z4):
  19.     numero = abs(z4)
  20. if abs(numero) == abs(z5):
  21.     numero = abs(z5)
  22.  
  23. print "El número %d es más cercano al %d ." % (n1, numero)

Resultado:
Cita:
Ingresa el primer número: 3
Ingresa el segundo número: 4
Ingresa el tercer número: 7
Ingresa el cuarto número: 1
Ingresa el quinto número: 9
El número 3 es más cercano al 1 .









Edito:


Código Python:
Ver original
  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)

¿Esto es normal?

Cita:
Ingresa el primer número: 3
Ingresa el segundo número: 6
Ingresa el tercer número: 7
Ingresa el cuarto número: 8
Ingresa el quinto número: 9
El número 3 es más cercano al 9.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar

Última edición por REHome; 07/10/2010 a las 23:22 Razón: Resultado del programa.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:20.