Pr1. Gestió de fitxers

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca


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()

Exercici 7