martes, 26 de septiembre de 2017

Invertir el orden de una cadena alfanumérica en Python

Puede descargar el archivo: cadena_inversa.py

Dada una cadena alfanumérica devuelve su inversa. Lo que hace es cambiar de orden los caracteres del string.

Método 1

Esta es, posiblemente, la forma más rápida de invertir una cadena.

#Método 1  
miCadena="La contraseña es abracadabra"  
def invierte1(cadena):  
 return cadena[::-1]  
print(invierte1(miCadena))  


Método 2

Creamos un bucle for y recorremos todos los elementos de la cadena de principio a fin, poniendo cada elemento al final.

#Método 2  
miCadena="Radar o no radar"  
def invierte2(cadena):  
 inversa=""  
 for i in cadena:  
  inversa=i+inversa  
 return inversa  
print(invierte2(miCadena))  

Método 3

Creamos un for que va hacia atrás recorriendo todos los elementos del string.

#Método 3  
miCadena="Esto es Troya"  
def invierte3(cadena):  
 inversa=""  
 for i in range(len(cadena),0,-1):  
  #print(i) imprimiría del 5 al 1, por eso luego restamos 1  
  inversa+=cadena[i-1]  
 return inversa  
print(invierte3(miCadena))  

Método 4

Usando un for recorremos todos los elementos de la cadena.

#Método 4  
miCadena="El maestro Uruburu"  
def invierte4(cadena):  
 invertida=''  
 for i in cadena:  
  invertida=i+invertida  
 return invertida  
print(invierte4(miCadena))  


Una variante: Invertir las letras de cada palabra de una frase sin cambiar de orden las palabras

Si queremos invertir el orden de las letras de cada palabra dentro de una frase pero sin cambiar de orden las palabras utilizando el siguiente código conseguiríamos este cambio en la frase:

amigos esto es magia  🡢  sogima otse se aigam

mi_frase="amigos esto es magia"  
frase=mi_frase.split()  
def invierte(cadena):   
 return cadena[::-1]  
frase_inversa=[]  
for palabra in frase:  
 frase_inversa.append(invierte(palabra))  
print(' '.join(frase_inversa))  

2 comentarios:

  1. si quiero intercambiar los valores pero no porcompleto, sino el primero al final, el segundo al penultimo,etc ¿como hago ?

    ResponderEliminar
    Respuestas
    1. Hola.
      Me imagino que te refieres a invertir las letras de cada palabra dentro de una frase pero sin invertir el orden las palabras. Por ejemplo: "amigos esto es magia" sería "sogima otse se aigam".
      Para conseguir esto podrías emplear el siguiente código:

      mi_frase="La contraseña es abracadabra"
      frase=mi_frase.split()
      def invierte(cadena):
      return cadena[::-1]
      frase_inversa=[]
      for palabra in frase:
      frase_inversa.append(invierte(palabra))
      print(frase_inversa)
      print(' '.join(frase_inversa))

      Eliminar