¿Cómo puedo hacer un bucle a través de una concatenación?
Estoy intentando dividir una palabra con un ‘.’ después de cada letra, lo cual logré hacer exitosamente. Sin embargo, mi siguiente paso es dividir las palabras divididas actuales nuevamente, pero no quiero repetir variaciones.
Mi salida esperada es la siguiente:
Palabra de entrada: amaxa
. El primer bucle dará como resultado: a.maxa, am.axa, ama.xa, amax.a
.
Luego, la siguiente división debe dar como resultado: a.m.axa, a.ma.xa, a.max.a
.
Básicamente, quiero obtener diferentes variaciones de la palabra con ‘.’ agregado cuando se ha completado un bucle completo. Sin embargo, mi problema principal era que tenía una ‘.’ apareciendo junto a otra, e intenté usar una declaración ‘continue’, pero no funcionó. A continuación se muestra mi código fuente:
print("Ingrese el correo electrónico sin @gmail.com")
palabra = input("Palabra: ")
len_palabra = len(palabra) - 1
lis = []
for i in range(0, len_palabra):
slice_palabra = palabra[:1+i] + "." + palabra[1+i:]
lis.append(slice_palabra)
print(slice_palabra)
for j in range(0, len_palabra):
slices = slice_palabra[:1+j] + "." + slice_palabra[j+1:]
if slices[i:] == slices[:]:
continue
print(slices)
El resultado dado es el siguiente:
Ingrese el correo electrónico sin @gmail.com
Palabra: amax
a.max
am.ax
a.m.ax
am..ax
am..ax
ama.x
a.ma.x
am.a.x
ama..x
Básicamente, quiero eliminar ‘am..ax’ y ‘ama..x’.
davy.ai
Para evitar repeticiones de la palabra con puntos consecutivos, puedes hacer uso de una declaración condicional dentro del segundo bucle para saltar cualquier iteración que resulte en puntos dobles. Aquí hay una versión actualizada de tu código:
Con este código, la salida que obtienes después de ingresar “amax” será:
que debería ser la salida esperada que buscabas.