Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 2 Octubre 2010, 15:12 pm



Título: [python] calcular impar y su doble.
Publicado por: Meta en 2 Octubre 2010, 15:12 pm
Buenas:

¿Cómo hago con Python 2.6, al introducir un número, determine si éste es el doble de un número impar?

Por ahora he hecho esto:
Código
  1. # Introducir un valor.
  2. a = raw_input('introduce un número: ')
  3.  
  4.  
  5.  
  6. if a % 2 == 0 and a * 2:
  7.    print 'El número es par.'
  8.    print a

Me da este error:
Código:
raceback (most recent call last):
  File "/home/acaymo/NetBeansProjects/tema4a6/src/tema4a6.py", line 25, in <module>
    if a % 2 == 0 and a * 2:
TypeError: not all arguments converted during string formatting

Saludo.


Título: Re: [python] calcular impar y su doble.
Publicado por: [L]ord [R]NA en 2 Octubre 2010, 15:46 pm
primero que todo debes hacer la conversion del raw_input ya que este devuelve un string.

Código
  1. a=int(raw_input('introduce un número: '))

Si te trata de el doble de un numero par primero que todo cuando es dividido por 2 debe dar un numero par, por lo cual nos quedaria

Código:
a%2==0

pero de esa division no necesitamos saber si ese es el numero sino si la mitad de ese numero tambien es par... por lo cual nos quedaria:

Código:
(a/2)%2==0

que tambien es igual a:

Código:
a%4==0


Título: Re: [python] calcular impar y su doble.
Publicado por: criskapunk en 2 Octubre 2010, 17:57 pm
Perdon por el offtopic, pero me parecio mejor preguntarlo aca.

@Lord R.N.A.

Como llegas  a la conclusion de que:
Código
  1. (a/2)%2==0
Es lo mismo que:
Código
  1. a%4==0

Es lo unico que no entendi, ya que use la primer forma para resolverlo.

Un saludo y gracias ;)


Título: Re: [python] calcular impar y su doble.
Publicado por: Franr en 2 Octubre 2010, 18:24 pm
Perdon por el offtopic, pero me parecio mejor preguntarlo aca.

@Lord R.N.A.

Como llegas  a la conclusion de que:
Código
  1. (a/2)%2==0
Es lo mismo que:
Código
  1. a%4==0

Es lo unico que no entendi, ya que use la primer forma para resolverlo.

Un saludo y gracias ;)

Extremo sobre medio, matemática de primer grado che ;D


Título: Re: [python] calcular impar y su doble.
Publicado por: [L]ord [R]NA en 2 Octubre 2010, 18:28 pm
porque '(a/b)/c' es igual a '(a/b)(1/c)' si multiplicas es igual a 'a/(b*c)'... disculpa la explicacion tan corta, estoy desde el celular.


Título: Re: [python] calcular impar y su doble.
Publicado por: Meta en 2 Octubre 2010, 18:45 pm
Para que lo sepan.

El resultado debe dar como dice abajo y lo explico de otra manera.

Citar
Diseña un programa que, dado un número entero,  determine si éste es el doble de un número impar.

Ejemplo: 14 es el doble de 7, que es impar.


Título: Re: [python] calcular impar y su doble.
Publicado por: criskapunk en 2 Octubre 2010, 18:54 pm
Algo asi:

Código
  1. def dobleImpar(n):
  2. if (n/2) % 2 != 0:
  3. print n, "es el doble de ", n/2, " que es impar"
  4.  
  5. num = int(raw_input("Ingrese un numero: "))
  6. dobleImpar(num)

Un saludo ;)


Título: Re: [python] calcular impar y su doble.
Publicado por: Meta en 2 Octubre 2010, 19:03 pm
El def aún no debo usarlo.

Lo intento hacer así.

Código
  1. # Introducir un valor entero.
  2. a = int(raw_input('introduce un n&#250;mero: '))
  3. b = a / 2
  4.  
  5. if a % 2 == 0:
  6.    print a, 'es el doble de ', b, 'que es impar.'
  7.  

Su resultado es este:
Supuestamente da bien.
introduce un número: 14
14 es el doble de  7 que es impar.


Si introduzco el 16 su resultado es este:
introduce un número: 16
16 es el doble de  8 que es impar.


El 8 es par, no impar.

¿Respecto al tu código, puedes hacerlo similar al mio pero que funcione?

Gracias.


Título: Re: [python] calcular impar y su doble.
Publicado por: criskapunk en 2 Octubre 2010, 19:25 pm
Lo que haces en tu script es comprobar que a sea par, y lo que tenes que verificar es que b sea impar.

Código
  1. a = int(raw_input("Ingrese un numero: "))
  2. b = a/2
  3.  
  4. if b % 2 != 0:    # Comprobamos que la mitad del numero ingresado sea impar
  5. print a, "es el doble de ", b, " que es impar"
  6.  
  7. raw_input()

En caso de que la mitad del numero ingresado sea impar, mostrara el mensaje. En caso contrario, no hara nada.

Un saludo ;)


Título: Re: [python] calcular impar y su doble.
Publicado por: Novlucker en 2 Octubre 2010, 19:27 pm
Exacto, solo tienes que verificar que la división es impar, porque el doble de cualquier número siempre será un par.

Saludos


Título: Re: [python] calcular impar y su doble.
Publicado por: ace332 en 2 Octubre 2010, 20:38 pm
Se trata de verificar si un número par es el doble de otro que es impar..

Como este número es el doble de otro entonces debe ser par. Y además como es el doble de un impar termina no siendo multiplo de 4.

Osea que el número dado debe cumplir la condicion:

num % 2 == 0 && num %4 != 0

Saludos  ;)


Título: Re: [python] calcular impar y su doble.
Publicado por: [L]ord [R]NA en 2 Octubre 2010, 21:39 pm
me imagino que se refieren a algo asi?

Código
  1. a = input('Ingrese el numero: ')
  2. if a%2!=0:
  3.    print 'El numero que haz introducido es impar.'
  4. elif a%4==0:
  5.    print str(a)+' es el doble de '+str(a/2)+' que es par.'
  6. else:
  7.    print str(a)+' es el doble de '+str(a/2)+' que es impar.'


Título: Re: [python] calcular impar y su doble.
Publicado por: Meta en 2 Octubre 2010, 22:20 pm
Gracias, sólo quería esto.

Código
  1. # Introducir un valor entero.
  2. a = int(raw_input('Introduce un número: '))
  3. b = a / 2
  4.  
  5. # Acepta la condición siempre que el número de
  6. #entrada sea el doble y impar.
  7. if a % 2 == 0 and a % 4 != 0:
  8.    print a, 'es el doble de ', b, 'que es impar.'