Mi objetivo es crear un descifrador de códigos en Python. Hasta ahora he embarullado encima de las letras y como resultado tienen una lista de caracteres individuales.
#Result of inputting the string 'hello world'
['C', 'V', 'N', 'N', 'H', 'X', 'H', 'K', 'N', 'O']
Mi objetivo es la producción de este como una cadena con un espacio 'CVNNH XHKNO'
Ahora tengo varias opciones, pero estoy seguro de cuál sería el mejor: puedo convertir en una cadena antes de manipularla o manipular la lista antes de convertirlo en una cadena.
Tengo las siguientes ayudantes disponibles desde el proceso hasta el momento (de forma automática)
length = [5,5] #list
total_chars = 10 #int
no_of_words = 2 #int
He convertido a una cadena de CVNNHXHKNO y pensó en insertar el espacio después de la quinta carta mediante el cálculo de un punto de inicio [0], el punto medio [5] y el punto final [11].
start = 0
mid_point = total_chars - length[0]
print(mid_point)
first_word = message[start:mid_point]
print(first_word)
second_word = message[mid_point:total_chars]
print(second_word)
completed_word = first_word + ' ' + second_word
print(completed_word)
Por desgracia esto es sólo manualmente y no toma en cuenta si existe un 5 o más palabras. He tratado de iterar sobre la lista original de caracteres individuales de bucles for anidados utilizando la longitud de la lista, pero parecen confundir a mí mismo y pensar demasiado.
Si usted tiene esto como entradas:
l = ['C', 'V', 'N', 'N', 'H', 'X', 'H', 'K', 'N', 'O']
length = [5,5] #list
total_chars = 10 #int
no_of_words = 2 #int
A continuación, puede calcular su salida de la siguiente manera:
words = []
pos = 0
for i in length:
words.append("".join(l[pos:pos+i]))
pos += i
result = " ".join(words)
print(words)
print(result)
Salida:
['CVNNH', 'XHKNO']
CVNNH XHKNO