Elimina comentaris¶
Es disposa d’un fitxer on hi ha un programa en Python i es vol obtenir un altre fitxer amb el mateix codi però havent esborrat tots els comentaris.
Dissenya la funció descomentaritza que donats dos noms de fitxer,
llegeixi el text que hi ha en el primer fitxer i escrigui en el segon
fitxer el mateix text però eliminant, de cada línia, tot el que
apareix després del caràcter “#”. Si una línia comença amb aquest
caràcter s’ha d’eliminar sencera.
Com exemple podeu usar el fitxer exemple.py amb el contingut següent:
import math # resol una equació de 1r o 2n grau amb arrels reals # capçalera def exemple (a, b, c): # tres paràmetres if a == 0: # eq. de 1r grau x = -c/b return x else: # eq. de 2n grau d = math.sqrt(b**2-4*a*c) # funció de la l. mat. que calcula l'arrel x1 = (-b + d)/(2*a) # calen tots els parèntesis x2 = (-b - d)/(2*a) return x1, x2
un cop executada la funció es crearà un segon fitxer amb el contingut:
import math def exemple (a, b, c): if a == 0: x = -c/b return x else: d = math.sqrt(b**2-4*a*c) x1 = (-b + d)/(2*a) x2 = (-b - d)/(2*a) return x1, x2
Desa la funció al fitxer decomentaritza.py. La funció ha de passar
el següent doctest (cal que us baixeu el fitxer exemple.py):
>>> descomentaritza ('exemple.py', 'exemple_des.py') >>> with open('exemple_des.py', 'r') as f: ... for linia in f: ... print(linia[:-1]) import math def exemple (a, b, c): if a == 0: x = -c/b return x else: d = math.sqrt(b**2-4*a*c) x1 = (-b + d)/(2*a) x2 = (-b - d)/(2*a) return x1, x2
Nota
Pots descarregar el fitxer amb tests descomentaritza.txt.
Solució
Disposeu de solucions al fitxer descomentaritza.py