Autor Tema: ¿Operador? chulo de Python  (Leído 1778 veces)

KeoH

  • Hero Member
  • *****
  • Mensajes: 1170
  • Karma: 17
¿Operador? chulo de Python
« en: Octubre 12, 2011, 02:13:07 am »
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

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

Código: [Seleccionar]
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

  • Hero Member
  • *****
  • Mensajes: 12882
  • Karma: 377
Re: ¿Operador? chulo de Python
« Respuesta #1 en: Octubre 12, 2011, 02:01:57 pm »
eso lo podes hacer con switch/case

por ejemplo

Código: [Seleccionar]
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

  • Hero Member
  • *****
  • Mensajes: 1170
  • Karma: 17
Re: ¿Operador? chulo de Python
« Respuesta #2 en: Octubre 12, 2011, 02:59:23 pm »
mmm pos no lo habia pensao xDDD

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6334
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: ¿Operador? chulo de Python
« Respuesta #3 en: Octubre 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.
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

  • Hero Member
  • *****
  • Mensajes: 12882
  • Karma: 377
Re: ¿Operador? chulo de Python
« Respuesta #4 en: Octubre 17, 2011, 07:53:06 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