Parèntesis¶
Dissenyeu la funció
ben_parentitzada_1que a partir d’un string que representa una expressió matemàtica, retorna True si l’expressió està ben parentitzada i False en cas contrari.Una expressió està ben parentitzada si es compleixen les propietats següents:
analitzada d’esquerra a dreta mai hi ha més parèntesis tancats que oberts.
al final hi ha el mateix nombre de parèntesis oberts que tancats.
Desa la funció al fitxer
parentesis.py. La funció ha de passar el següent doctest:>>> ben_parentitzada_1('((x+2)*(3*r/z)))') False >>> ben_parentitzada_1("(f(x)))(5*x-y)") False >>> ben_parentitzada_1('((x+2)*(((3*r/z))') False >>> ben_parentitzada_1("((x+2)*(3*r/z))") True
Nota
Podeu descarregar el fitxer amb tests
parentesis_1.txtDissenyeu la funció
ben_parentitzada_2(variant de l’anterior) de forma que retorni l’string'correcte'si l’expressió està ben parentitzada. Si no ho està, ha de retornar l’string'parèntesi tancat incorrecte'i la posició en el cas que no es compleixi la propietat 1. Si no compleix la propietat 2, la funció ha de retornar l’string'més parèntesis oberts que tancats'.Desa la funció al fitxer
parentesis.py. La funció ha de passar el següent doctest:>>> ben_parentitzada_2("((x+2)*(3*r/z))") 'correcte' >>> ben_parentitzada_2("(f(x)))(5*x-y)") ('parèntesi tancat incorrecte', 6) >>> ben_parentitzada_2('((x+2)*(3*r/z)))') ('parèntesi tancat incorrecte', 15) >>> ben_parentitzada_2('((x+2)*(((3*r/z))') 'més parèntesis oberts que tancats'
Nota
Podeu descarregar el fitxer amb tests
parentesis_2.txt
Solució
Disposeu de solucions al fitxer parentesis.py