A partir de una cadena introducida por el usuario, se trata de pintar una caja de texto con la propia cadena, utilizando espacios en blanco. La complejidad reside en cómo pintar las cadenas reversas, esto es, escritas al revés.
Hay varias formas de resolver el problema. Con listas parece obvio, aunque yo lo he resuelto de la manera más fácil para mí, claro.
Este es el código:
# -*- coding: cp1252 -*-
# Ángel Luis García García
# Algoritmia
while True:
# Introducimos palabra.
cadena = raw_input('Introduce palabra: ')
# Si no escribimos nada, salimos.
if len(cadena) == 0: break
# Longitud de la cadena.
long_cadena = len(cadena)
# Espacio en blanco.
blanco = " " * (long_cadena - 2)
# Pintamos la cadena de arriba.
print cadena
# Pintamos las columnas.
puntero = long_cadena - 1
for i in range(1,long_cadena):
puntero -= 1
if i == long_cadena - 1:
# Pintamos la cadena de abajo.
a = list(cadena)
a.reverse()
cadena_down = ""
for i in a: cadena_down = cadena_down + i
print cadena_down
else:
# Columnas
print cadena[i] + blanco + cadena[puntero]
Y ejemplos de la solución:
Si crees tener una solución alternativa puedes enviarla, si lo deseas, a este blog, y la publicaré, para de esta manera aprender todos y ver que hay varias formas de dar solución a un mismo problema.
Saludos.
while True:
ResponderSuprimir# Introducimos palabra.
cadena = raw_input('Introduce palabra: ')
# Si no escribimos nada, salimos.
if len(cadena) == 0: break
# Longitud de la cadena.
long_cadena = len(cadena)
# Espacio en blanco.
blanco = " " * (long_cadena - 2)
# Pintamos la cadena de arriba.
print cadena
# AQUÍ VIENE LA ALTERNATIVA
# Pintamos columnas
for i in range(1,long_cadena - 1):
print cadena[i] + blanco + cadena[-i-1]
# Pintamos la cadena de abajo.
print cadena[::-1]
Muy bien Alex!
ResponderSuprimir