Foros del Web » Programando para Internet » Python »

invertir numeros en una función

Estas en el tema de invertir numeros en una función en el foro de Python en Foros del Web. Buenas tardes , tengo una duda muy simple que ahora no recuerdo :) Como hago una funcion (def) para invertir números(dígitos) , se hacerlo con ...
  #1 (permalink)  
Antiguo 08/02/2012, 10:34
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 6 meses
Puntos: 3
invertir numeros en una función

Buenas tardes , tengo una duda muy simple que ahora no recuerdo :)

Como hago una funcion (def) para invertir números(dígitos) , se hacerlo con string

Ejemplo a[::-1]

Pero solo con díjitos?

123456789 --> 987654321

Gracias
  #2 (permalink)  
Antiguo 08/02/2012, 10:41
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años
Puntos: 1329
Respuesta: invertir numeros en una función

Podrías probar convertirlo a string y luego volverlo int:

Código Python:
Ver original
  1. int(str(123456789)[::-1])

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 08/02/2012, 10:43
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: invertir numeros en una función

Puedes convertir tu número a string, invertirlo y después pasarlo otra vez a número con la función int.

Otra opción es con while, modulo, división y multiplicación.
  #4 (permalink)  
Antiguo 08/02/2012, 10:46
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: invertir numeros en una función

Cita:
Iniciado por razpeitia Ver Mensaje
Puedes convertir tu número a string, invertirlo y después pasarlo otra vez a número con la función int.

Otra opción es con while, modulo, división y multiplicación.
Tengo entendida esa pero no me acuerdo :( , pero sin estring

Ejemplo :

183 / 10 = 1
83 / 10 = 8 ,
30 / 10 = 3

Con el % también , pero no me acuerdo :s

Hagamos las cosas bien xd , si nos piden números hagamoslo con números :)

Sabes algo ?
  #5 (permalink)  
Antiguo 08/02/2012, 10:54
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: invertir numeros en una función

Ok, es fácil.

Propiedades de la división con enteros:
Código:
183 / 10 == 18
18 / 10 == 1
1 / 10 == 0
Propiedades del modulo 10, es que cualquier número, modulo 10 te regresa su ultimo dígito.
Código:
183 % 10 == 3
18 % 10 == 8
1 % 10 == 1
Otra propiedad interesante es la siguiente:
Código:
x = 0
x += 10 * x + 3 # 3
x += 10 * x + 8 # 38
x += 10 * x + 1 # 381
Ahora solo te falta combinar esas propiedades.
  #6 (permalink)  
Antiguo 08/02/2012, 11:17
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: invertir numeros en una función

Cita:
Iniciado por razpeitia Ver Mensaje
Ok, es fácil.

Propiedades de la división con enteros:
Código:
183 / 10 == 18
18 / 10 == 1
1 / 10 == 0
Propiedades del modulo 10, es que cualquier número, modulo 10 te regresa su ultimo dígito.
Código:
183 % 10 == 3
18 % 10 == 8
1 % 10 == 1
Otra propiedad interesante es la siguiente:
Código:
x = 0
x += 10 * x + 3 # 3
x += 10 * x + 8 # 38
x += 10 * x + 1 # 381
Ahora solo te falta combinar esas propiedades.
La última la conozco , muy interesante.

En mi función como hago :

def invertir(num)
for x in range(len(num)) # num no vale nada :S y peta
......
print invertir(123456789)

No me sale :)
  #7 (permalink)  
Antiguo 08/02/2012, 11:30
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: invertir numeros en una función

Tengo :

def reverse(data_list):
return data_list[::-1]

print reverse([1,2,3,4])
print reverse('hola')
Pero aqui le dices que es string no me interesa :)

Ahora tengo y funciona pero no lo quiero asíi !!"!"O!·!"$!"

def reverse(data_list):
return int(str(data_list)[::-1])


print reverse(123456)

Última edición por drakgoku1; 08/02/2012 a las 11:36
  #8 (permalink)  
Antiguo 08/02/2012, 11:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: invertir numeros en una función

len(num) no te va a funcionar por que, la función len solo acepta colecciones, como strings o listas.
  #9 (permalink)  
Antiguo 08/02/2012, 12:06
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: invertir numeros en una función

Cita:
Iniciado por razpeitia Ver Mensaje
len(num) no te va a funcionar por que, la función len solo acepta colecciones, como strings o listas.
Lo he visto hacer con el len() , te sorprenderías de python :)

Tengo una duda como le marcas el final ? si no puedes con un len() o ='\0' en un while?


Quiero algo parecido a esto :

Código Python:
Ver original
  1. def reverse(num):
  2.     reverse=0
  3.     while num >= 6: # sin dictarle cuantos
  4.          reverse=reverse*10+num%10
  5.          num=num/10
  6.     return reverse
  7.  
  8. print reverse(123456) # no me cuenta el 1 :S

Última edición por drakgoku1; 08/02/2012 a las 12:13
  #10 (permalink)  
Antiguo 08/02/2012, 12:43
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: invertir numeros en una función

Hacerlo asi es correcto?

Código Python:
Ver original
  1. def reverse(num):
  2.     reverse=0
  3.     while num >= 1:
  4.          reverse=reverse*10+num%10
  5.          num=num/10
  6.     return reverse
  7.  
  8. print reverse(123)

claro el >=1 dice + grandes o = que 1 , si pongo, -2 -1 0 1 2 3, no funciona :)

Como lo arreglo ? sin un len() o ='\0'

Última edición por drakgoku1; 08/02/2012 a las 12:57
  #11 (permalink)  
Antiguo 11/02/2012, 07:40
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: invertir numeros en una función

Alguna solución de como le marco el final a ese while / for en una funcion ?

Última edición por drakgoku1; 11/02/2012 a las 08:12
  #12 (permalink)  
Antiguo 11/02/2012, 12:22
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: invertir numeros en una función

Pues "num" está siendo dividido entre 10, con división entera, por lo que en realidad la condición del while debería ser >= 0. Por ejemplo, 4/10 da 0.
Negativos nunca habrá, porque un número positivo dividido entre otro positivo no puede dar negativo.


Saludos.
  #13 (permalink)  
Antiguo 22/04/2016, 14:43
 
Fecha de Ingreso: abril-2016
Ubicación: Santiago
Mensajes: 1
Antigüedad: 7 años, 11 meses
Puntos: 0
Respuesta: invertir numeros en una función

Hola buenas, voy a resolver el problema.
Usando las propiedades que ya se han dicho:

Código Python:
Ver original
  1. 183 // 10 == 18
  2. 18 // 10 == 1
  3. 1 // 10 == 0

Código Python:
Ver original
  1. 183 % 10 == 3
  2. 18 % 10 == 8
  3. 1 % 10 == 1

Código Python:
Ver original
  1. x = 0
  2. x = 10 * x + 3 # 3
  3. x = 10 * x + 8 # 38
  4. x = 10 * x + 1 # 381

Entonces el código quedaría más o menos así:

Código Python:
Ver original
  1. def invertir():
  2.     a=int(input("Ingresar un Número: "))
  3.     x=0
  4.     z=len(str(a))
  5.     for i in range(z):
  6.         b=a%10
  7.         a=a//10
  8.         x=x*10+b
  9.     return x

Ojo, que si nuestro número termina en 0, hay un problema, porque 0*10+b=b, por lo que queda sin el 0. Si queremos arreglar este error, pasamos el valor a String:

Código Python:
Ver original
  1. def invertir():
  2.     a=int(input("Ingresar un Número: "))
  3.     x=0
  4.     y=(a%10==0)  #Aquí le damos el valor a la variable "y", True, o False, si el N° termina en 0.
  5.     z=len(str(a))
  6.     for i in range(z):
  7.         b=a%10
  8.         a=a//10
  9.         x=x*10+b
  10.     if y:
  11.         x=str(x)
  12.         x='0'+x
  13.     return x
  #14 (permalink)  
Antiguo 22/04/2016, 19:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: invertir numeros en una función

Por favor no revivas temas antiguos, cierro.

Etiquetas: invertir, numeros
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.
Tema Cerrado




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