Sei sulla pagina 1di 19

22/03/2021

Lezione 6
File di testo

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 1


• Leggere dei numeri e determinare il numero con più divisori,
smettere quando si legge un numero primo
• Dati i numeri fra 1 e 9000 elencare i numeri perfetti, ovvero quei
numeri X in cui la somma dei divisori di X, X escluso, è uguale ad X

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 2


• Leggere dei numeri e determinare il numero con più divisori, smettere quando si legge un numero
primo (due divisori)
• Ci sono due cicli
1. Riguarda la lettura dei numeri da provare
1. Conteggio dei divisori
• Primo ciclo
• Prima del ciclo: forzare ingresso: numeroDivisori ad un valore diverso da 2
• Condizione: numero divisori diverso da 2
• Istruzioni da ripetere
• Conteggiare i divisori
• Leggere un altro numero
• Secondo ciclo
• Prima del ciclo divisore vale 2 numeroDivisori vale 1
• Condizione: valore di divisore minore o uguale al numero letto
• Istruzioni da ripetere:
• Verificare la divisibilità ed eventualmente incrementare la variabile numeroDivisori
• Incrementare di 1 la variabile divisori

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 3


• Numero Divisore numeroDivisori
• 6 1 1
• 6 2 2
• 6 3 3
• 6 4 3
• 6 5 3
• 6 6 4 Codice che conta i divisori

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 4


Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 5
Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 6
• Dati i numeri fra 1 e 9000 elencare i numeri perfetti, ovvero quei numeri X in cui la somma dei
divisori di X, X escluso, è uguale ad X
• Due cicli
1. Ripetere le istruzioni da 1 a 9000
2. Dato un numero X verificare se è perfetto
• Primo ciclo
• Prima del ciclo X=1
• Condizione X minore o uguale a 9000
• Istruzioni da ripetere
• Ciclo di verifica del numero perfetto
• Incremento di 1 di X
• Secondo ciclo
• Prima del ciclo divisore vale 2 sommaDivisori vale 1
• Condizione: valore di divisore minore o uguale al numero letto
• Istruzioni da ripetere:
• Verificare la divisibilità ed eventualmente sommarlo alla variabile sommaDivisori
• Incrementare di 1 la variabile divisori

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 7


Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 8
Leggere e scrivere da/su file (di testo)
• I file sono un comodo deposito per dati che debbono essere utilizzati nel
tempo
• Esistono diversi tipi di file noi usiamo solo quelli di testo
• Altra possibilità sono i file binari
• I file sono gestiti dal Sistema Operativo e quindi l’interprete deve formulare
delle richieste al S.O. per usare i file
• I file per essere usati debbono essere
• Aperti: fl = open(nomeFile, modalità)
• Si chiede al SO di poter usare il file
• Restituisce in fl l’oggetto per manipolare il file (fl è un nome scelto dal programmatore)
• Chiusi: fl.close()
• Si avverte il SO che il file indicato da fl (fl è il nome scelto dal programmatore) non serve
più

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 9


'D:\MaterDisp\NLP\_Originali\FileProva.txt'

Alcune nozioni pratiche (Windows)


• Il file può non trovarsi nella cartella del programma occorre indicare
oltre al nome del file il percorso per raggiungerlo:

Nome file

File di cui mi interessa conoscere il percorso


percorso:
• Con il mouse tasto dx sul nome
• Proprietà
• Compare la finestra a fianco

Il valore di nomeFile sarà:


'D:/MaterDisp/NLP/_Originali/FileProva.txt‘
Notate che il carattere \ è sostituito da /
Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 10
Alcune nozioni pratiche (Mac)
• Il file può non trovarsi nella cartella del programma occorre indicare
oltre al nome del file il percorso per raggiungerlo:

Nome file
Nel finder individuare il file di interesse:
• Con il mouse sul nome
Command+i ( + i) percorso
• Compare la finestra a fianco

Il valore di nomeFile sarà:


'/System/Library/CoreServices‘

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 11


Modalità di apertura di un file
• "r"
• Lettura (Read)
• valore di default può essere omesso;
• apre il file in lettura, viene segnalato un errore se non esiste
• "a"
• Aggiunta (Append)
• apre il file per aggiungere dei dati, se non esiste lo crea
• "w"
• Scrittura (Write)
• Apre il file per scrivere
• Se il file non esiste lo crea, se esiste lo cancella e poi scrive su di esso
• Per aggiungere dati ad un file lo si deve aprire in Append
• "x"
• Creazione (Create)
• Crea il file indicato, genera un errore se esiste già

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 12


Scrittura su file (di testo)
• fl.write(testo da scrivere)
• Scrive sul file indicato da fl l’argomento fra parentesi che può essere
• Una costante stringa (testo fra apici)
• Una variabile di tipo str

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 13


Carattere di a capo

Non ho specificato un percorso, quindi lo ha creato


dove si trova il file sorgente

Ricordarsi di trasformare i numeri in stringhe

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 14


Lettura da file (di testo)
• Vi sono due modi
• fl.read()
• Legge tutto il contenuto del file indicato da fl
• Il contenuto può essere messo in una variabile
• fl.read(numCaratteri) Per ora non le usiamo
• Legge numCaratteri dal file indicato da fl
• Il contenuto può essere messo in una variabile
• Se si ripete la lettura legge numCaratteri successivi
• fl.readline()
• Legge fino al primo carattere di fine riga (′\n’)nel file indicato da fl
• Se si ripete la lettura legge le righe successive

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 15


Leggo e non trasformo in numero, quindi
è una stringa quello che ho letto

Trasformo in numero float e


lo utilizzo come tale

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 16


• Dato il file dati.txt che contiene sequenze di numeri (1 per riga)
contare quanti di questi numeri sono positivi
• Creare il file:
• Si può usare un editor di testo (Pycharm stesso o Notepad ma non word o simili)

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 17


Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 18
Esercizi per il 26/03
• Leggere due numeri A e B finché A non è minore di B
• Leggere una sequenza di numeri dal file dati.txt e sommare quelli compresi fra A e B
estremi inclusi, smettere quando o il file è finito o il numero letto è uguale a B+1
• Leggere una sequenza di numeri e smettere quando si legge un numero
uguale al primo numero letto (devo leggere almeno 2 numeri)
• Come sopra ma invece di leggere da tastiera leggere da file e aggiungete l’ulteriore
condizione del file terminato
• Leggere una sequenza di numeri e smettere quando due numeri letti
consecutivamente sono uguali
• Esempio 8, 12, 45, 46, 37, 18, 18
• Come sopra ma invece di leggere da tastiera leggere da file e aggiungete l’ulteriore
condizione del file terminato

Lz 6 (19/3/21) Informatica Generale (EcoCom P-Z) 19

Potrebbero piacerti anche