Foros del Web » Programando para Internet » Python »

Imprimir cadenas, listas, tuplas, etc. Al revez.

Estas en el tema de Imprimir cadenas, listas, tuplas, etc. Al revez. en el foro de Python en Foros del Web. Estaba viendo unos ejercicios y uno me pareció sencillo, ingresar un numero de 3 dígitos e imprimirlo al revez. En python entiendo que con raw_input ...
  #1 (permalink)  
Antiguo 22/11/2011, 22:16
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 13 años
Puntos: 6
Imprimir cadenas, listas, tuplas, etc. Al revez.

Estaba viendo unos ejercicios y uno me pareció sencillo, ingresar un numero de 3 dígitos e imprimirlo al revez. En python entiendo que con raw_input automáticamente toma lo ingresado como cadenas y que los sub indices negativos hacen empezar desde el final...

Pero tratando de hacerlo siempre me termina imprimiendo el mismo número... traté de adaptar algo que vi con sorted y reverse (admito que lo hago casi a ciegas porque no comprendo del todo eso) y de la otra manera, pues, no sé, tal vez sea la costumbre de c++.

Primera manera:

Código Python:
Ver original
  1. # -*- coding utf 8 -*-
  2. num = raw_input('Introduzca un numero de 3 digitos: ')
  3. for i in range(-1,len(num)):
  4.     i -= 1
  5.     revez = num[i]
  6. print revez

Este solo me imprime un número, el segundo de atrás para adelante o viceversa, creo que me falta alguna variable que cuente, pero no sabría donde ponerla.

Intenté con sorted pero leyendo un poco creo que solo se puede usar para las listas y no para cadenas de texto.

Edito: definitivamente no se puede hacer reverse con una cadena, logré imprimir pero poniendo cada número por separado en una lista y funcionó, pero la idea es devolver el número (o cadena) al revéz.

Última edición por nanotime; 22/11/2011 a las 22:25 Razón: agregar "descubrimiento"
  #2 (permalink)  
Antiguo 22/11/2011, 22:52
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Imprimir cadenas, listas, tuplas, etc. Al revez.

Pero claro que puedes hacer reverse de una cadena. De hecho en python es muy simple.

Código Python:
Ver original
  1. cadena = "esto no es un palindromo"
  2. print cadena[::-1]
  #3 (permalink)  
Antiguo 22/11/2011, 22:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Imprimir cadenas, listas, tuplas, etc. Al revez.

Si lo quieres con un for puedes hacer esto.
Código Python:
Ver original
  1. cadena = "Esto no es un palindromo"
  2. resultado = ""
  3. for i in range(len(cadena) -1, -1, -1):
  4.     resultado += cadena[i]
  5. print cadena
  6. print resultado
  #4 (permalink)  
Antiguo 23/11/2011, 04:47
Avatar de nanotime  
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 13 años
Puntos: 6
Respuesta: Imprimir cadenas, listas, tuplas, etc. Al revez.

De hecho, me funciona la primera manera pero solo con la variable declarada, pero no me funciona cuando trato de poner al usuario introducir el 'número'/cadena, me tira error de sintaxis.

El segundo si me funciona y no pensé que fuese así de sencillo como poner -1 -1 -1 y luego agregarlos a resultado. Es más, pensaba en que era necesacio poner -1 -2 y -3 por sus posiciones, a que se debe el -1 -1 -1?
  #5 (permalink)  
Antiguo 23/11/2011, 08:48
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Imprimir cadenas, listas, tuplas, etc. Al revez.

Cita:
Iniciado por nanotime
a que se debe el -1 -1 -1?
El primer -1 forma parte de:
Cita:
len(cadena) - 1
Los carácteres del string son 0-indexed, así que para acceder a ellos vas desde 0 hasta len(cadena) - 1.
El segundo es para que te genere un array hasta 0, porque ya hemos dicho que las posiciones empiezan en 0. Y por último, el tercero es para que en vez de que el step vaya aumentando, disminuya.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: cadenas, ejercicio, listas, usar
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 13:44.