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 carattere ch. Ad esempio, ord("A") restituisce 65 e ord("B") restituisce 66;
  • chr(i): restituisce il carattere che ha come codice i. 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.

Last modified: Sunday, 22 December 2024, 6:28 PM