[python] calcular impar y su doble.

Iniciado por Meta, 2 Octubre 2010, 15:12 PM

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

Meta

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 (python) [Seleccionar]
# Introducir un valor.
a = raw_input('introduce un número: ')



if a % 2 == 0 and a * 2:
    print 'El número es par.'
    print a


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

[L]ord [R]NA

primero que todo debes hacer la conversion del raw_input ya que este devuelve un string.

Código (python) [Seleccionar]
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

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:

(a/2)%2==0

que tambien es igual a:

a%4==0

criskapunk

Perdon por el offtopic, pero me parecio mejor preguntarlo aca.

@Lord R.N.A.

Como llegas  a la conclusion de que:
Código (python) [Seleccionar]
(a/2)%2==0
Es lo mismo que:
Código (python) [Seleccionar]
a%4==0

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

Un saludo y gracias ;)

Franr

Cita de: criska 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 (python) [Seleccionar]
(a/2)%2==0
Es lo mismo que:
Código (python) [Seleccionar]
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

[L]ord [R]NA

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.

Meta

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

criskapunk

Algo asi:

Código (python) [Seleccionar]
def dobleImpar(n):
if (n/2) % 2 != 0:
print n, "es el doble de ", n/2, " que es impar"

num = int(raw_input("Ingrese un numero: "))
dobleImpar(num)


Un saludo ;)

Meta

El def aún no debo usarlo.

Lo intento hacer así.

Código (python) [Seleccionar]

# Introducir un valor entero.
a = int(raw_input('introduce un número: '))
b = a / 2

if a % 2 == 0:
    print a, 'es el doble de ', b, 'que es impar.'


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

criskapunk

#8
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 (python) [Seleccionar]
a = int(raw_input("Ingrese un numero: "))
b = a/2

if b % 2 != 0:    # Comprobamos que la mitad del numero ingresado sea impar
print a, "es el doble de ", b, " que es impar"

raw_input()


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

Un saludo ;)

Novlucker

Exacto, solo tienes que verificar que la división es impar, porque el doble de cualquier número siempre será un par.

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