Python esercizi svolti su stringhe, file, dizionari

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

Python Text processing

ESERCIZIO 1


E’ dato un file «dati.txt» caratterizzato dal seguente formato rappresentante delle coppie nome/età. Per esempio:
Pippo 23
Ada 19
Felice 32
Geronima 40
Ciccio 19
Si legga tutto il file creando un dizionario le cui chiavi sono fornite dall’età. A ciascuna età viene associata una lista con i nomi di persone che hanno quell’età.

SOLUZIONE

f=open("dati.txt","r") #apro in lettura
d={} #inizializzo il dizionario
s=f.readline() #leggo una riga
while s!="": #finché il file non è finito
  s=s.split() #divido la riga nei campi dati
  eta=int(s[1]) #converto il secondo elemento
  if eta in d: #se l’età è già presente
    d[eta]=d[eta]+[s[0]] #aggiungo il nome
  else: #altrimenti
    d[eta]=[s[0]] #aggiungo età e nome
  s=f.readline() #leggo una nuova riga
f.close() #chiudo il file
d
OUTPUT:
{19: [‘Ada’, ‘Ciccio’], 23: [‘Pippo’], 32: [‘Felice’], 40: [‘Geronima’]}
ESERCIZIO 2
Scrivere un programma che legge da file una sequenza di interi, separati da “a capo” (quindi un intero per riga), e la memorizza in una lista.
  •  Il nome del file viene fornito da tastiera.
  • Il vettore può avere al massimo 50 valori, ma il file presenta un numero di interi non definito.
  •  Si stampi a video eventualmente un avviso se la lunghezza massima del vettore è stata raggiunta interrompendo l’acquisizione di valori
  • Si stampi a video infine il vettore acquisito.

SOLUZIONE

#Programma che legge max 50 interi da file e li memorizza in un vettore
nomefile=input("Inserire il nome del file:\n")
fp=open(nomefile,'r') #senza le virgolette: è una variabile, non una stringa
lista=[] #inizializzazione del vettore
i=0 #inizializzazione del contatore di interi letti da file
linea=fp.readline()
while((linea!="") and (i<50)): #finché il file non è finito AND i<50
  lista = lista + [int(linea)]
  i=i+1 #incrementa i
  linea=fp.readline()
if(i==50):
  print("\nMax numero di valori acquisibile raggiunto.\n")
  fp.close()
print (lista)
OUTPUT:
Inserire il nome del file:
numeri.txt
[5, 12, 3, 4, 22, 34, 11, 66, 76, 1, 5, 6, 0, 9, 77, 54, 32, 78, 89]
ESERCIZIO 3
Dato un dizionario popolato secondo l’esercizio precedente, scrivere un programma Python che, letta da tastiera la stringa indicante un nome proprio, stampi su file l’età associata al nome indicato se presente, altrimenti scriva su file “non presente”.
 Il nome del file è dato dal nome inserito a cui viene aggiunta l’estensione “.txt”.
 Esempio.
Si consideri il dizionario dell’esercizio precedente. Se da tastiera viene inserito il nome “Felice”, il programma scriverà su file “Felice.txt” il valore 32 (vedi esempio).
SOLUZIONE
nome=input("Inserisci un nome:") #leggo un nome
presente=False #tecnica: uso una variabile per verificare
#l'evento:"ho trovato il nome nel dizionario"
f=open(nome+".txt","w") #apro il file in scrittura
#inizio la ricerca
for eta in d: #per ogni età presente in d
  if nome in d[eta]: #se il nome compare almeno una volta
    f.write(str(eta)+"\n") #stampo l'età
    presente=True #ho trovato il nome nel dizionario
if not presente: #se non l'ho trovato nemmeno una volta
  f.write("Non presente") #scrivo che non è presente
f.close() #chiudo il file
OUTPUT:
Inserisci un nome:Felice
ESERCIZIO 4
Scrivere un programma Python che legga da file ”numeriEstringhe.txt” il suo contenuto che è costituito da numeri e stringhe alternate a caso, separate da «a capo», e gli elementi formati da sole cifre nella lista numeri e tutti gli altri nella lista stringhe.
SOLUZIONE
f=open('numeriEstringhe.txt', 'r')
numeri=[]
stringhe=[]
linea=f.readline()
while linea!= "": #se il file non è finito…
  st=linea[0:-1]
  st = linea.replace("\n", "")
  if st.isdigit() :
    
    numeri=numeri+[st]
  else:
    stringhe=stringhe+[st]
  linea=f.readline()
f.close()
print(numeri)
print(stringhe)
OUTPUT:
[’24’, ‘1’, ‘404’, ’33’, ’45’]
[‘Esempio:’, ‘Ciao’, ‘buonanotte’, ‘Natale’]

(1738)

Ti potrebbe interessare anche:  Python: le espressioni regolari (regex). Classi di negazione

Altri articoli nella categoria "Lezioni di Informatica"

PubblicitàPubblicità