es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El bucle while no termina pero la condición se cumple.

Estoy intentando codificar el cifrado Vigenere, por lo que necesito tener dos listas de la misma longitud. Pensé que todo estaría bien con mi solución, pero el bucle while no funciona a pesar de que se cumple la condición. Debido a eso, tengo dos listas con diferentes números de letras. ¿Por qué funciona así y cómo mejorar eso? Soy un nuevo programador que aprendió de libros, así que nunca he visto que el bucle while no funciona correctamente. Mi código:

plaintext = “Este es un mensaje secreto”
plaintext = plaintext.upper()
key = “secreto”
key = key.upper()
def encrypt_vigenere2( key, plaintext ):
a = []
b= []
i = 0
for letter in (plaintext):
if letter != ” “:
a.append(letter)
while i<len(a):
for element in key:
if element != ” “:
b.append(element)
i +=1
return a,b
print(encrypt_vigenere2(key,plaintext))

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando crear dos listas de la misma longitud, una que contenga el texto plano y otra que contenga la clave. El problema es que tu bucle while no está correctamente configurado. La condición se cumple, pero el bucle no está incrementando correctamente la variable i.

    Para solucionarlo, deberías mover la instrucción i += 1 dentro del bucle for, para que se incremente cada vez que se ejecute el bucle. Esto debería asegurar que las dos listas tengan la misma longitud.


    plaintext = "Este es un mensaje secreto"
    plaintext = plaintext.upper()
    key = "secreto"
    key = key.upper()
    def encrypt_vigenere2( key, plaintext ):
    a = []
    b= []
    i = 0
    for letter in (plaintext):
    if letter != " ":
    a.append(letter)
    while i<len(a):
    for element in key:
    if element != " ":
    b.append(element)
    i +=1 # Mueve esta instrucción dentro del bucle for
    return a,b
    print(encrypt_vigenere2(key,plaintext))

Comments are closed.