Esercizi: file
Esercizi
Esercizio 1
Scrivere una funzione prodotto_file(filename)
che legge il file di nome filename
. Ogni riga del file è costituita da un unico numero intero. La funzione restituisce il prodotto dei numeri presenti nel file.
Esercizio 2
Scrivere una funzione che prende come parametro una stringa che rappresenta il nome di un file, come nell'esercizio precedente. La funzione legge il file e restituisce il numero di caratteri, parole e linee in esso presenti. Per questo esercizio si consideri parola una qualunque sequenza di caratteri separata da spazi. Ad esempio, il file
Siamo io e gianni ,
nostri amici.
contiene due righe, 7 parole (conta anche la virgola) e 37 caratteri.
Esercizio 3
Scrivere una funzione copyfile
che ha due stringhe come parametri. Le stringhe contengono due nomi di file, chiamati file sorgente e file destinazione. Il programma copia il contenuto del file sorgente nel file destinazione, sovrascrivendo quest'ultimo se esiste già.
Esercizio 4
Scrivere una funzione crypt(src, dst)
che si comporta come copyfile
, ma il file copiato deve essere criptato usando il cifrario di Cesare. Bisogna rimpiazzare ogni carattere alfabetico con quello che lo segue nell'alfabeto (quindi rimpiazzare A con B, B con C, etc... e poi Z con A). Gli altri tipi di carattere devono rimanere invariati. Per svolgere l'esercizio, sono necessarie le seguenti funzioni:
ord(ch)
: restituisce il codice numerico Unicode del caratterech
. Ad esempio,ord("A")
restituisce65
eord("B")
restituisce66
;chr(i)
: restituisce il carattere che ha come codicei
. Ad esempio,chr(65)
restituisce"A"
.
Esercizio 5
Scrivere un programma che legge un file contenente una mappa, come questa:
..........
.....*....
..*.....*.
.....*....
..........
Il programma stampa la posizione (numero di riga e numero di colonna, contando da zero) degli asterischi nella mappa. Ad esempio, per l'esempio di prima il programma stamperebbe
(1, 5)
(2, 2)
(2, 8)
(3, 5)
Esercizio 6
Modificare il programma dell'esercizio precedente e trasformarlo in una funzione che prende come parametro il nome di un file contenente la mappa e restituisce una lista di tuple, ogni tupla contenente le coodinate di un asterisco.
Esercizio 7
Si consideri un file così composto: il file è costituito da varie righe, ogni riga è costituita da un numero intero, un simbolo di due punti, e una sequenza di numeri interi separati da spazi. Ad esempio, un file valido è:
12: 5 2 10 6
100: 10 92 44
5: 10 -5
Scrivere un programma che legge il file e stampa il numero di volte nelle quali il numero a sinistra dei due punti si può ottenere come somma di due numeri consecutivi nella lista dopo i due punti. Ad esempio, per il file di sopra il programma dovrebbe stampare 2
. Infatti, nella prima riga il 12 lo si può ottenere come 2+10, e nella terza riga il 5 lo si può ottenere come 10+(-5). Non c'è invece modo di ottenere 100 come somma di numeri consecuitivi nella seconda riga.