Pr1. Gestió de fitxers
Contingut
Guillem Solà i Boeck (host A10BPC22)
Exercici 1
Realitza un algorisme que llegeixi les 100 primeres línies del fitxer de text diccionari.txt penjat al moodle i les imprimeixi
arxiu = open('castellano.txt','r') for i in range(100): cadena2 = arxiu.readline() print(cadena2, end="") arxiu.close
Exercici 2
Modifica el programa anterior per crear un fitxer nou anomenat primeres.txt amb les 100 primeres paraules del diccionari. No ha sortir per pantalla, hauràs d’obrir el fitxer nou
fi = open('castellano.txt','r') fo = open('primers.txt','w') for i in range(100): cadena2 = arxiu.readline() fo.write(cadena2) fi.close fo.close
Exercici 3
Obri el fitxer diccionari.txt i elimina tots el caràcters ‘
que apareixen al començament d’algunes paraules, així com tot el que hi ha després de la /. Crea un nou fitxer, diccio2.txt amb les paraules netes. Utilitza la llibreria estàndard de python string. Aquesta llibreria no l’has d’importar
fi = open('castellano.txt','r') fo = open('diccio2.txt','w') for i in fi: cadena2 = fi.readline() if cadena2.startswith("'") cadena2 = cadena2[1:] pos = cadena2.find('/') if pos != -1: cadena2 = cadena2[:pos]+"\n" #Afegit perquè si eliminem la resta de la línia, també ens mengem el salt de línia, i amb això, l'afegim fo.write(cadena2) fi.close fo.close
Exercici 4
Realitza un algorisme que llegeixi totes les paraules que comencin per una paraula donada per l’usuari. Has de fer servir el nou diccionari, diccio2.txt.
lletra = input("Per quina lletra començarà la paraula? ") fi = open('diccio2.txt','r') fir i in fi: cadena2 = fi.readline() if cadena2.startswith(lletra): print(cadena2) fi.close
Exercici 5
Realitza un algorisme que torni una paraula en random del diccionari. Has de fer servir el nou diccionari, diccio2.txt. Per saber de quant és el random, compta el número de paraules que té. Potser útil fer servir llistes
def treuInfo(fitxer): text = [] f = open(fitxer,'r') text = f.readlines() f.close return text def numerosAlea(limit): import random return random.randint(0,limit) lst=[] lst=treuInfo("diccio2.txt") total=len(lst) pos=numeroAlea(total) print(pos) print(lst[pos])
Exercici 6
Tenim un fitxer que es diu alumnes.txt amb el següent contingut:
joe 10 15 20 30 40 bill 23 16 19 22 sue 8 22 17 14 32 17 24 21 2 9 11 17 grace 12 28 21 45 26 10 john 14 32 25 16 89
Hi ha una línia per cada estudiant i en cadascuna hi ha el nom de l’estudiant i una sèrie de notes de pràctiques. Realitza un programa que mostri els estudiants que han lliurat més de X pràctiques. El número de pràctiques es demanarà a l’usuari. Realitza el control d’excepcions i validació de l’entrada de dades. El número de pràctiques no pot ser negatiu ni lletres.
Nota: pots fer servir el mètode split https://www.tutorialspoint.com/python3/string_split.htm
Sortida esperada
Quantes pràctiques ha de fer?: a Has d'introduir un número. Quantes pràctiques ha de fer?: -2 No pots posar números negatius o 0 Quantes pràctiques ha de fer?: 5 alumne: sue , Nº pràctiques: 12 alumne: grace , Nº pràctiques: 6
Solució
archivo=open('alumnes.txt','r') lista=[] pract=int(input("Quantes pràctiques a de fer per aprovar: ") while pract>0: try: for line in archivo.readlines(): lista=line.split() #print(lista) elements=(len(lista)-1) if elements>=pract: print(lista) #print(elements) else: print("Ha de ser major de 0") except ValueError: print("Només pots possar numeros") archivo.close()