[pyar] como validar cualquier elemento de una tupla?

fisa fisadev en gmail.com
Dom Mar 19 19:50:28 ART 2017


Buenas!

El tema está en tu if, donde estás comparando que entrada sea igual a una
tupla con esos dos elementos.
El operador == devuelve True cuando ambos elementos son iguales, lo que hay
a la derecha y a la izquierda del ==. En tu caso, a la izquierda hay un
string suelto (por ejemplo "conejo"), mientras que a la derecha hay una
tupla con dos strings.
Por las dudas, una tupla es como una lista, solo que no se puede modificar
(no se le pueden sacar y poner elementos, etc). Cuando escribís ("conejo",
"pato"), estás definiendo una tupla con dos elementos, los strings "conejo"
y "pato".
Algunos ejemplos:

(123, "hola mundo", False) == (123, "hola mundo", False)
>>> True
(123, "hola mundo", False) == (123, "chau mundo", False)
>>> False
(123, "hola mundo") == (123, "hola mundo", False)
>>> False
etc.

Si lo que querés es ver que lo que hay en tu variable entrada sea algún
valor de un grupo conocido de valores que definiste en una lista, podés
hacer esto:

if entrada in ("conejo", "pato"):
...

Saludos!


On Sun, Mar 19, 2017 at 7:33 PM criss pro <crisspro en hotmail.com> wrote:

> hola. creí que había entendido la logica del asunto, pero parece que aun
> hay algo que no capto bien. ¿Por qué razón no imprime el mensaje del
> siguiente código si en la entrada ingreso alguno de los valores de la
> tupla?, según yo estoy siguiendo el mismo principio de la solución que me
> dieron con el problema anterior. código:
>
> while 1:
>     print ("ingresa el animal correcto")
>     entrada= input ()
>     if (entrada==("conejo", "pato")):
>         print ("es el animal correcto")
>
> intenté quitando los paréntesis de los extremos en el if, pero tampoco
> logro resultado.
>       como tercera alternativa jugué con la función in para que me dijiera
> si algún elemento de una tupla está en este caso, en la variable entrada,
> pero aparece un mensaje de error diciendo que la función in no permite
> tuplas al inicio sino solo cadenas. de allí me surgió una pregunta que
> quizás tenga que ver con la solución de mi problema y es: ¿’'Cómo le indico
> a python que 1. verifique si cualquier elemento de una tupla está en una
> cadena. 2. ¿cómo indico a python que me diga si todos los elementos de una
> tupla están contenido en una cadena?. nótese que no tengo problemas cuando
> se trata de un único valor sino cuando se trata de barios.
>
> saludos.
> *From:* criss pro <crisspro en hotmail.com>
> *Sent:* Sunday, March 19, 2017 2:19 PM
> *To:* Python Argentina <pyar en python.org.ar>
> *Subject:* Re: [pyar] como validar cualquier elemento de una tupla?
> perfecto!. ahora entiendo mejor, muchas gracias por la respuesta y las
> recomendaciones.
>      Apropósito, pensaba que con cambiar el asunto y borrar el mensaje
> original del cuerpo podía responder al correo y quedar como mensaje nuevo,
> pero al parecer no, bueno XD.
>
> un gran saludo.
>
> *From:* fisa <fisadev en gmail.com>
> *Sent:* Sunday, March 19, 2017 1:29 PM
> *To:* Python Argentina <pyar en python.org.ar>
> *Subject:* Re: [pyar] como validar cualquier elemento de una tupla?
>
>
> Buenas! Lo que estás buscando es esto:
>
> b = a.startswith(("mirar", "ver"))
>
> Algo que es importante: el operador "or" es algo que opera sobre dos
> valores y te devuelve un resultado, como la suma o la resta. Cuando haces
> a.startswith("mirar" or "ver"), no le estás pasando dos parámetros a
> startswith, le estás pasando un solo parámetro: el resultado de hacer
> "mirar" or "ver". Similar a lo que pasaría que si hicieses
> a.startswith("mirar" + "ver").
>
> Un detalle: no hace falta ponerle paréntesis a los True. Y mejor todavía:
> ni hace falta usar booleanos comparados contra True, tu if podría ser así:
>
>     if b and c:
>
> Finalmente, consejo de programación: conviene usar buenos nombres para las
> variables, para que puedas leer y mantener fácilmente tu código. "a", "b",
> "c", etc, no están buenos. En su lugar convendría usar cosas como
> "texto_ingresado", "quiere_ver", "al_mar", etc. Las letras son gratis, no
> te van a cobrar por usar más :)
>
> Saludos!
>
> On Sun, Mar 19, 2017, 13:12 criss pro <crisspro en hotmail.com> wrote:
>
> Hola. tengo una duda, basica, pero no logro hayar la solución.
> nececito imprimir un mensaje si una cadena comienza con cualquiera de los
> elementos de una tupla. el código que uso es este:
>
>
> while 1:
>     a= input ()
>     b= a.startswith ("mirar" or "ver")
>     c= a.endswith ("mar")
>     if b==(True) and c==(True):
>         print ("es un mar azul, como todos los mares")
>
> solo me funciona con la primera palabra, si cambio el operador “or” por
> comas, obtengo un error.
>
> saludos.
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
> --
> fisa  -  Juan Pedro Fisanotti
> ------------------------------
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
> ------------------------------
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar

-- 
fisa  -  Juan Pedro Fisanotti
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170319/1a229c95/attachment.html>


Más información sobre la lista de distribución pyar