Foro de elhacker.net

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:

Código:
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:
Código:
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
  1. palabras = ["casa", "coche", "calle"]
  2. respuesta = input("Escribe una frase con alguna de estas palabras " + str(palabras) + ": ")
  3. valido = any(palabra in respuesta for palabra in palabras)
  4. 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.


Código:
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.


Código
  1. palabras = ["casa", "coche", "calle"]
  2. respuesta = input("Escribe una frase con alguna de estas palabras " + str(palabras) + ": ")
  3. valido = any(palabra in respuesta for palabra in palabras)
  4. 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!!