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.

Renovar la lista después de cada iteración.

Quiero renovar la “namelist” en cada iteración y usar “if” para comparar “name” con “namelist”. La primera iteración siempre reemplazará el contenido de “namelist” porque “namelist” en la primera iteración está vacío. Para la iteración número x, quiero que “name” se compare con el contenido de la lista de la iteración anterior, es decir, x – 1. No quiero agregar “name” a “namelist” sino reemplazar todo el contenido para que la comparación siempre sea entre “name” y la última versión de “namelist”. La línea “#-line” en el código muestra dónde creo que debería estar el operador.

def loop():
    namelist = []
    a = 1
    while a < 5:
        name = input("Ingrese su nombre")
        if name != namelist:
            # operador que reemplaza el contenido de "namelist" con "name"
        else:
            continue
        a += 1

loop()
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para reemplazar el contenido de namelist con name en cada iteración, puedes utilizar el operador de asignación =. Sin embargo, también necesitas asegurarte de comparar name con el contenido de la versión anterior de namelist, no con la actual. Puedes lograr esto creando una variable temporal para almacenar la versión anterior de namelist.

    Aquí te muestro cómo puedes modificar el código:

    def loop():
        namelist = []
        a = 1
        while a < 5:
            name = input("Ingrese su nombre: ")
            prev_namelist = namelist  # almacenar la versión anterior de namelist
            namelist = [name]  # reemplazar namelist con name
            if name not in prev_namelist:  # comparar con la versión anterior de namelist
                a += 1
            else:
                continue
    
    loop()
    

    En esta versión del código, prev_namelist almacena el contenido de namelist antes de ser reemplazado por name. Luego, utilizamos el operador in para verificar si name ya está en prev_namelist, lo cual es equivalente a comparar name con el contenido de la versión anterior de namelist. Si name no está en prev_namelist, incrementamos a para pasar a la siguiente iteración. De lo contrario, continuamos con la iteración actual sin incrementar a.

Comments are closed.