[pyar] [OT] - Checkeando parentesis balanceados.

Lucio Torre lucio.torre en gmail.com
Vie Jun 18 15:52:22 ART 2010


2010/6/18 Sebastian Bassi <sbassi en clubdelarazon.org>:
> Mi versión es facil de entender y pasa tus tests:
> def balance(s):
>    cont = 0
>    for x in s:
>        if cont<0:
>            return False
>        else:
>            cont = cont-1 if x == ')' else cont+1
>    return True if cont == 0 else False

Definitivamente creo que tiene que ser una cosa asi la solucion si la
vas a presentar en el ejecicio.
Si elijiese ponerme quisquilloso no lo haria un viernes y tampoco
haria estos comentarios:
- la llamaria "es_balanceado" o algo asi, que indique que devuelve un bool
- cont, s, y x los llamaria: abiertos, expresion y c
- "return True if cont == 0 else False" == "return (cont == 0)" (los
parentesis son por gusto)
- la construccion del suite la dejaria de lado y usaria nosetests
- el if oneliner lo expandiria a varias lineas y haria nada si el
caracter no es "(" o ")" (no esta especificado que hacer si hay otros
caracteres en el string. Yo propongo ignorarlos y dar un resultado
correcto igual a la cuenta de parentesis. La otra opcion es tirar una
excepcion. Dar un resultado errado no deberia ser opcion)
- Ya que estamos, el "else" del "if cont<0:" lo evitaria, el claro que
es una salida rapida de la funcion con el return ahi. me evito una
indentacion y pensar al respecto de eso.

Bueno, no se porque me la agarre con vos, en realidad queria decir que
para algo tan tonto como este ejercicio me preocupa mas como hacer
algo legible y de clara intencion que oneliner (no que oneliners no
sean divertidos, pero hoy me pego por aca)

Lucio.



More information about the pyar mailing list