Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: k41z3r en 24 Marzo 2021, 14:55 PM

Título: Duda en python: comparar resultado de split.
Publicado por: k41z3r en 24 Marzo 2021, 14:55 PM
Buenas. Lo primero pedir disculpas por una consulta como esta, probablemente es muy fácil de solucionar pero estoy aprendiendo y por más que he usado los buscadores no encuentro la forma correcta de hacerlo.

Tengo una lista, por ejemplo, "LUGARES", y una variable "respuesta" con entrada para el usuario:

LUGARES = ["casa", "coche", "calle", "campo", "playa", "montaña"]
respuesta = input ("¿Dónde te sientes más cómod@?: ")


Suponiendo que el usuario pueda responder con cualquier combinación de palabras, ¿cómo puedo separar cada palabra y comparar por si UNA (o al menos una) coincide con mi lista "LUGARES"?
(Por si por ejemplo el usuario introduce: "Me siento mejor en la playa", de la comparación por valida).

Leyendo he encontrado el comando split que intuyo que es parte de la respuesta, pero me pierdo a la hora de especificar que es suficiente con que coincida UNO de esos splits y no todos.

¿Alguien puede aclararme la duda? Gracias!!
Título: Re: Duda en python: comparar resultado de split.
Publicado por: pery_soy en 24 Marzo 2021, 19:52 PM
Hola!

seria algo asi:

for i in respuesta.split():
    if i in LUGARES:
        print(f'{i} en LUGARES')


saludos !
Título: Re: Duda en python: comparar resultado de split.
Publicado por: K-YreX en 24 Marzo 2021, 21:12 PM
Python puede llegar a ser tan compacto...
Código (python) [Seleccionar]

palabras = ["casa", "coche", "calle"]
respuesta = input("Escribe una frase con alguna de estas palabras " + str(palabras) + ": ")
valido = any(palabra in respuesta for palabra in palabras)
print("Correcto!!" if valido else "Incorrecto...")
Título: Re: Duda en python: comparar resultado de split.
Publicado por: k41z3r en 24 Marzo 2021, 21:53 PM
Acabo de probar ambas opciones y las dos son interesantes.


Cita de: pery_soy en 24 Marzo 2021, 19:52 PM

for i in respuesta.split():
   if i in LUGARES:
       print(f'{i} en LUGARES')

Esta me devuelve como valor de "i" un string exacto a la palabra repetida.


Cita de: K-YreX en 24 Marzo 2021, 21:12 PM
Código (python) [Seleccionar]

palabras = ["casa", "coche", "calle"]
respuesta = input("Escribe una frase con alguna de estas palabras " + str(palabras) + ": ")
valido = any(palabra in respuesta for palabra in palabras)
print("Correcto!!" if valido else "Incorrecto...")

Y esta me devuelve un booleano con valor "True" para la variable "valido".

Dos formas diferentes de conseguir mi propósito ;-) Gracias a ambos!!