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:
# 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.
primero que todo debes hacer la conversion del raw_input ya que este devuelve un string.
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
Perdon por el offtopic, pero me parecio mejor preguntarlo aca.
@Lord R.N.A.
Como llegas a la conclusion de que:
(a/2)%2==0
Es lo mismo que:
a%4==0
Es lo unico que no entendi, ya que use la primer forma para resolverlo.
Un saludo y gracias ;)
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:
(a/2)%2==0
Es lo mismo que:
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
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.
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.
Algo asi:
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 ;)
El def aún no debo usarlo.
Lo intento hacer así.
# 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.
Lo que haces en tu script es comprobar que a sea par, y lo que tenes que verificar es que b sea impar.
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 ;)
Exacto, solo tienes que verificar que la división es impar, porque el doble de cualquier número siempre será un par.
Saludos
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 ;)
me imagino que se refieren a algo asi?
a = input('Ingrese el numero: ')
if a%2!=0:
print 'El numero que haz introducido es impar.'
elif a%4==0:
print str(a)+' es el doble de '+str(a/2)+' que es par.'
else:
print str(a)+' es el doble de '+str(a/2)+' que es impar.'
Gracias, sólo quería esto.
# Introducir un valor entero.
a = int(raw_input('Introduce un número: '))
b = a / 2
# Acepta la condición siempre que el número de
#entrada sea el doble y impar.
if a % 2 == 0 and a % 4 != 0:
print a, 'es el doble de ', b, 'que es impar.'