¿Operador? chulo de Python

Started by KeoH, October 12, 2011, 02:13:07 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

KeoH

Este post pensaba ponerlo en Mesa de Ayuda, pero creo q sé la respuesta de la pregunta ... asi q directamente lo pongo como sugerencia para el lenguaje BennuGD. La pregunta es si existe en Bennu un operador similar al operador IN de python ( no se si operador es la palabra correcta), me explico. Como hoy estaba un poco aburrido me he puesto a mirar para programar en python q siempre me ha llamado la atencion, y leyendo la documentación pues he encontrado el operador IN q puede ser bastante interesante. Pongo un trozo de codigo donde se usa y ahora explico q es lo que hace por si no sabeis python xD


def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
    while True:
        ok = raw_input(prompt)
        if ok in ('y', 'ye', 'yes'):
            return True
        if ok in ('n', 'no', 'nop', 'nope'):
            return False
        retries = retries - 1
        if retries < 0:
            raise IOError('refusenik user')
        print complaint


Esta función sirve para preguntarle al usuario que introduzca si o no. En la linea ok = raw_input(prompt), el programa se queda esperando a que el usuario escriba una de las opciones que estan en los IF, para poner si ha hecho si o no, o si mete cualquier otra darle otro intento, hasta el tope de intentos( por defecto 4) y salir de la funcion.
Lo que me interesa de este código  y es lo que me parece interesante es el IN de los IF.

if ok IN ('y', 'ye', 'yes'):


Lo que hace python es comprobar si la respuesta que ha escrito el usuario concuerda con alguna de las opciones de la lista. Si concuerda, la condición se cumple y se ejecuta el código de la condición (return True).

Lo mas parecido en Bennu sería (creo q sería) encadenar OR en el IF. Y mis preguntas/sugerencia sería: ¿Existe en Bennu un operador similar?¿Sería posible implementar eso en proximas versiones? Me parece que sería de bastante utilidad cuando por ejemplo se quiere hacer una comprobación muy tocha de una lista.

Bueno .. ahí dejo la sugerencia/cuestión  ;D

SplinterGU

eso lo podes hacer con switch/case

por ejemplo


switch (ok)
     case   "y", "ye", "yes":
              return True
     end
end


incluso es mas poderoso, porque podes usar rangos usando 3 puntos suspensivos...

por ejemplo,

case 1 ... 3:
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH


Drumpi

Son DOS puntos suspensivos para rangos.

Pero bueno, con ASCII, una STRING y un SWITCH se puede hacer un input tan poderoso como caracteres se quieran reconocer (borrar, intro, retorno de carro...). Luego sólo sería analizar la cadena.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on October 17, 2011, 07:29:17 PM
Son DOS puntos suspensivos para rangos.

Pero bueno, con ASCII, una STRING y un SWITCH se puede hacer un input tan poderoso como caracteres se quieran reconocer (borrar, intro, retorno de carro...). Luego sólo sería analizar la cadena.

es correcto, perdon, son 2 puntos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2