|
|
Riga 1: |
Riga 1: |
| <pre>[21:51:28] <amosse> Buona sera a tutti | | <pre></pre> |
| [22:27:21] <Stemby> 'sera
| |
| [22:27:31] <amosse> sera
| |
| [22:27:31] <Stemby> scusate per l'ora ma ho finito tardissimo
| |
| [22:27:39] <Stemby> che folla
| |
| [22:27:54] <amosse> si in effetti..
| |
| [22:27:55] <Stemby> fatemi un po' di spazio che non respiro
| |
| [22:28:13] <Stemby> amosse: sei l'ultimo superstite?
| |
| [22:28:17] <Stemby> che famo?
| |
| [22:28:33] <amosse> boh
| |
| [22:28:36] <Stemby> vediamo l'output su file, va
| |
| [22:28:40] <Stemby> gli altri si attaccano
| |
| [22:28:41] <amosse> ok
| |
| [22:28:45] <amosse> ok
| |
| [22:28:49] <Stemby> dammi 2 minuti che mi sistemo
| |
| [22:28:54] <amosse> ok
| |
| [22:29:19] <Stemby> tu hai guardato qualcosa?
| |
| [22:29:34] <amosse> a dire il vero non tanto
| |
| [22:29:51] <amosse> sto cercando di aggiornare il wikiu
| |
| [22:29:56] <amosse> *wiki
| |
| [22:30:46] <amosse> se hai un minuto dacci un occhiata, 'sequenze'
| |
| [22:31:11] <Stemby> vedrò
| |
| [22:31:17] <Stemby> non subito, comunque
| |
| [22:31:26] <amosse> ok
| |
| [22:31:32] <amosse> no problem
| |
| [22:31:51] <Stemby> eccomi
| |
| [22:31:58] <amosse> ok
| |
| [22:32:01] <Stemby> allora, riprendiamo da dove eravamo rimasti
| |
| [22:32:07] <Stemby> ti ricordi?
| |
| [22:32:09] <amosse> vai pure
| |
| [22:32:12] <amosse> si
| |
| [22:32:25] <Stemby> tutorial, capitolo 7 se non erro
| |
| [22:32:45] <amosse> http://docs.python.org/release/3.1.3/tutorial/inputoutput.html#reading-and-writing-files
| |
| [22:33:02] <Stemby> esatto
| |
| [22:33:23] <Stemby> i metodi fatti son chiari?
| |
| [22:33:36] <amosse> si, solo una domanda
| |
| [22:33:49] <Stemby> dimmi
| |
| [22:33:51] <Stemby> ah, ecco
| |
| [22:33:53] <Stemby> aspetta
| |
| [22:34:00] <Stemby> l'altra volta ti avevo detto:
| |
| [22:34:10] <Stemby> for line in f.readlines():
| |
| [22:34:14] <Stemby> ti ricordi?
| |
| [22:34:19] <amosse> si
| |
| [22:34:28] <Stemby> mi ricordavo che non era performante
| |
| [22:34:31] <Stemby> è così
| |
| [22:34:33] <Stemby> non usarlo
| |
| [22:34:43] <Stemby> puoi fare direttamente come sul wiki
| |
| [22:34:51] <Stemby> for line in f:
| |
| [22:34:52] <Stemby> ok?
| |
| [22:35:02] <amosse> ok
| |
| [22:35:07] <Stemby> perché gli oggetti di tipo file sono già iterabili
| |
| [22:35:13] <amosse> ok
| |
| [22:35:14] <Stemby> inutile creare una lista
| |
| [22:35:17] <Stemby> bon
| |
| [22:35:36] <Stemby> la tua domanda?
| |
| [22:36:14] <amosse> il secondo argomento di open(), quando è 'a' cosa significa esattamente
| |
| [22:36:43] <amosse> 'opens the file for appending'
| |
| [22:36:48] <amosse> ?
| |
| [22:36:52] --> groll (~groll@Azzurra-195E4683.48-151.net24.it) has joined #debianizzati-corsi
| |
| [22:37:07] <Stemby> adesso lo vediamo
| |
| [22:37:08] <amosse> ciao groll
| |
| [22:37:12] <amosse> ok
| |
| [22:37:15] <groll> ciao
| |
| [22:37:21] <Stemby> l'avevo spiegato già l'altra volta, comunque lo riprendiamo
| |
| [22:37:25] <Stemby> ciao groll
| |
| [22:37:41] <Stemby> bon
| |
| [22:37:52] <Stemby> allora vediamo come scrivere un file
| |
| [22:38:01] <amosse> ok
| |
| [22:38:10] <Stemby> primo passaggio: creare un oggetto di tipo file, in scrittura
| |
| [22:38:24] <Stemby> come dicevo, è una fase delicata
| |
| [22:38:40] <Stemby> se scrivi su un file esistente, lo cancelli!
| |
| [22:38:56] <Stemby> quindi posizionati in una cartella che sia sicura
| |
| [22:39:03] <Stemby> poi fammi vedere come faresti
| |
| [22:39:08] <Stemby> (nell'interprete)
| |
| [22:39:13] <amosse> ok
| |
| [22:41:07] <Stemby> forza
| |
| [22:41:08] <amosse> >>> f = open('prova.txt', 'w')
| |
| [22:41:13] <Stemby> ok
| |
| [22:41:25] <Stemby> fammi vedere se posso farlo anch'io
| |
| [22:41:27] <Stemby> un attimo
| |
| [22:41:50] <Stemby> ok, non ho nessun file che si chiama così
| |
| [22:42:18] <Stemby> bene
| |
| [22:42:31] <Stemby> secondo passaggio: dobbiamo scriverci i contenuti
| |
| [22:42:33] <Stemby> come fare?
| |
| [22:42:42] <Stemby> qui entra in gioco il metodo write()
| |
| [22:42:52] <amosse> ok
| |
| [22:42:53] <amosse> provo
| |
| [22:43:05] <Stemby> hai visto sul tutorial?
| |
| [22:43:16] <amosse> no
| |
| [22:43:28] <Stemby> guarda
| |
| [22:43:43] <Stemby> la sintassi è banale
| |
| [22:43:50] <Stemby> f.write(string)
| |
| [22:44:07] <Stemby> dove al posto di string ci metti una stringa
| |
| [22:44:14] <amosse> >>> f.write('ciao questa è una prova') 23
| |
| [22:44:18] <Stemby> ottimo
| |
| [22:44:28] <amosse> perchè 23?
| |
| [22:44:34] <Stemby> secondo te?
| |
| [22:44:43] <amosse> n° caratteri
| |
| [22:44:47] <Stemby> esatto
| |
| [22:45:10] <Stemby> in realtà hai dimenticato un carattere
| |
| [22:45:13] <Stemby> o meglio...
| |
| [22:45:23] <Stemby> vediamo cosa succede se aggiungi un altra stringa
| |
| [22:45:26] <Stemby> forza
| |
| [22:45:35] <Stemby> scrivi un'altra stringa
| |
| [22:46:31] <amosse> >>> f.write('\nla seconda riga\n') 17
| |
| [22:46:41] <Stemby> eh, così non vale :p
| |
| [22:46:47] <Stemby> comunque ok
| |
| [22:46:50] <Stemby> hai capito
| |
| [22:47:01] <amosse> si '\n'
| |
| [22:47:27] <Stemby> \n è un unico carattere, ti è chiaro questo, vero?
| |
| [22:47:39] <amosse> si si
| |
| [22:47:51] <Stemby> infatti se vedi ci sono 15 caratteri nella tua stringa
| |
| [22:47:56] <Stemby> più i 2 \n
| |
| [22:48:00] <Stemby> in totale 17
| |
| [22:48:04] <Stemby> conta :)
| |
| [22:48:15] <amosse> si esatto
| |
| [22:48:24] <Stemby> ok
| |
| [22:48:30] <Stemby> ora ti spiego un altro metodo
| |
| [22:48:34] <Stemby> close()
| |
| [22:48:38] <Stemby> prova
| |
| [22:49:05] <amosse> ok
| |
| [22:49:44] <amosse> chiude l'oggetto?
| |
| [22:49:59] <Stemby> diciamo di sì
| |
| [22:50:05] <Stemby> f.close()
| |
| [22:50:06] <Stemby> ok?
| |
| [22:50:10] <amosse> ok
| |
| [22:50:13] <Stemby> prova a scrivere una riga
| |
| [22:50:56] <amosse> ValueError: I/O operation on closed file.
| |
| [22:50:59] <Stemby> esatto
| |
| [22:51:02] <Stemby> però:
| |
| [22:51:10] <Stemby> >>> f
| |
| [22:51:10] <Stemby> <_io.TextIOWrapper name='prova.txt' mode='w' encoding='UTF-8'>
| |
| [22:51:12] <Stemby> ok?
| |
| [22:51:20] <Stemby> l'oggetto esiste ancora
| |
| [22:51:24] <Stemby> non è stato distrutto
| |
| [22:51:30] <Stemby> però è chiuso
| |
| [22:51:37] <Stemby> ovvero non ci si può operare sopra
| |
| [22:51:43] <Stemby> ok?
| |
| [22:51:46] <amosse> a cosa serve chiuderlo
| |
| [22:52:01] <Stemby> ad esempio:
| |
| [22:52:09] <Stemby> devi leggere e scrivere sullo stesso file
| |
| [22:52:30] <Stemby> chiudi la lettura
| |
| [22:52:34] <Stemby> lo riapri in scrittura
| |
| [22:52:38] <Stemby> e viceversa
| |
| [22:52:47] <amosse> ok
| |
| [22:52:56] <Stemby> diciamo che in realtà close() lo si potrebbe anche non usare praticamente mai
| |
| [22:53:19] <amosse> quindi diciamo per una questione di sicurezza dei dati
| |
| [22:53:20] <Stemby> nel senso che quando il processo finisce, python distrugge automaticamente tutti gli oggetti
| |
| [22:53:23] <weirdo> "ne resterà solo uno"
| |
| [22:53:44] <amosse> quale?
| |
| [22:53:48] <Stemby> e quando un oggetto file viene distrutto, per prima cosa in automatico viene chiuso
| |
| [22:54:04] <Stemby> però per chiarezza nei sorgenti non è mai male aggiungere un close()
| |
| [22:54:22] <amosse> scusa sorgenti?
| |
| [22:54:28] <Stemby> diciamo che io tendenzialmente lascio aperto in scrittura un file lo stretto indispensabile
| |
| [22:54:41] <Stemby> sorgenti = listato
| |
| [22:54:52] <Stemby> il codice dei tuoi script
| |
| [22:54:58] <amosse> ok
| |
| [22:55:14] <Stemby> appena posso chiudo
| |
| [22:55:25] <amosse> ok
| |
| [22:55:30] <Stemby> in questo modo, se dovesse spegnersi il pc, non dovrebbero succedere danni
| |
| [22:55:37] <Stemby> apro → scrivo → chiudo
| |
| [22:55:42] <Stemby> se serve, riapro
| |
| [22:55:50] <amosse> ok
| |
| [22:55:54] <Stemby> poi ognuno si regola come crede
| |
| [22:56:14] <amosse> quindi un file close() può essere solo letto?
| |
| [22:56:22] <Stemby> ?
| |
| [22:56:30] <Stemby> no, neppure
| |
| [22:56:36] <Stemby> se è chiuso è chiuso
| |
| [22:56:43] <Stemby> devi riaprirlo in lettura
| |
| [22:56:53] <amosse> hai ragione scusa
| |
| [22:57:02] <amosse> ok
| |
| [22:57:02] <Stemby> >>> f.read()
| |
| [22:57:02] <Stemby> Traceback (most recent call last):
| |
| [22:57:02] <Stemby> File "<stdin>", line 1, in <module>
| |
| [22:57:02] <Stemby> ValueError: I/O operation on closed file.
| |
| [22:57:12] <Stemby> basta provare...
| |
| [22:57:13] <Stemby> :)
| |
| [22:57:31] <amosse> ok i/o -> scrivi/leggi
| |
| [22:57:50] <Stemby> su file sì
| |
| [22:57:58] <amosse> ok
| |
| [22:58:10] <Stemby> input = ingresso
| |
| [22:58:20] <Stemby> (dei dati grezzi)
| |
| [22:58:32] <Stemby> output = iscita dei dati elaborati dal programma
| |
| [22:58:35] <Stemby> *uscita
| |
| [22:58:45] <amosse> ok
| |
| [22:58:53] <Stemby> possiamo fare:
| |
| [22:59:03] <Stemby> tastiera → script → monitor
| |
| [22:59:09] <Stemby> (come abbiamo fatto finora)
| |
| [22:59:11] <Stemby> oppure
| |
| [22:59:19] <Stemby> file → script → monitor
| |
| [22:59:22] <Stemby> oppure
| |
| [22:59:27] <Stemby> file → script → file
| |
| [22:59:32] <Stemby> oppure...
| |
| [22:59:46] <Stemby> tastiera → script → file
| |
| [22:59:57] <Stemby> oppure... tante altre possibilità
| |
| [23:00:06] <amosse> ok
| |
| [23:00:16] <Stemby> ma con gli strumenti che abbiamo ora direi che le possibilità son quelle
| |
| [23:00:35] <amosse> ok
| |
| [23:00:37] <Stemby> bene
| |
| [23:00:45] <Stemby> compito per la prossima volta:
| |
| [23:00:53] <Stemby> scrivere un convertitore di encoding
| |
| [23:01:09] <amosse> spiegati meglio
| |
| [23:01:21] <Stemby> input: file con codifica barbara
| |
| [23:01:29] <Stemby> → il tuo script
| |
| [23:01:40] <Stemby> → file codificato UTF-8
| |
| [23:01:45] <Stemby> ok?
| |
| [23:01:51] <Stemby> quello che mi hai chiesto l'altra volta
| |
| [23:01:57] <Stemby> di sicuro esiste già
| |
| [23:02:13] <Stemby> però riscrivilo tu da 0 in Python
| |
| [23:02:22] <Stemby> vedrai che ti basteranno poche righe
| |
| [23:02:31] <amosse> scusa ma non ho capito
| |
| [23:03:24] <amosse> mi puoi fare un esempio?
| |
| [23:03:25] <Stemby> sai cos'è la codifica di un file?
| |
| [23:03:39] <amosse> si e no
| |
| [23:03:47] <Stemby> mmmm
| |
| [23:03:52] <Stemby> weirdo: spieghi tu?
| |
| [23:03:54] <Stemby> :)
| |
| [23:04:11] <Stemby> groll?
| |
| [23:05:04] <groll> io vado a dormire ora
| |
| [23:05:04] <Stemby> http://it.wikipedia.org/wiki/File_di_testo#Codifica
| |
| [23:05:09] <weirdo> mica lo so spiegare, sono capace soltanto a litigarci con il charset
| |
| [23:05:17] <amosse> la codifica , per esempio UTF-8, ma in pratica cosa vuol dire
| |
| [23:05:25] <Stemby> :)
| |
| [23:05:32] <Stemby> hai presente la tabella ascii?
| |
| [23:05:55] <amosse> purtroppo no
| |
| [23:05:59] <Stemby> http://it.wikipedia.org/wiki/ASCII
| |
| [23:06:14] <Stemby> qui siamo all'informatica degli anni '70-'80
| |
| [23:06:27] <weirdo> ma anche se lo sai resta comunque una jungla
| |
| [23:06:33] <Stemby> la tabella ASCII dovrebbe essere impressa nella mente del programmatore
| |
| [23:07:09] <groll> notte
| |
| [23:07:11] <Stemby> in pratica è una tabella che fa corrispondere ad ogni numero un carattere
| |
| [23:07:13] <Stemby> notte groll
| |
| [23:07:23] <amosse> notte
| |
| [23:07:32] <amosse> ok
| |
| [23:07:47] <amosse> i numeri sono da 0 a 255?
| |
| [23:08:04] <Stemby> ad esempio, il carattere \n è il carattere numero 10 della tabella ASCII
| |
| [23:08:07] <Stemby> trovato?
| |
| [23:08:11] <Stemby> in realtà no
| |
| [23:08:22] <Stemby> la tabella ASCII è a 7 bit
| |
| [23:08:24] <Stemby> non a 8
| |
| [23:08:43] <Stemby> quindi hai giusto la metà dei caratteri a disposizione
| |
| [23:08:45] <amosse> 000 1010 012 10 0A LF ␊ ^J \n Line feed
| |
| [23:08:50] <Stemby> esattp
| |
| [23:08:55] <Stemby> 10 in decimale
| |
| [23:09:02] <Stemby> 1010 in binario
| |
| [23:09:12] <amosse> ok
| |
| [23:09:18] <-- groll (~groll@Azzurra-195E4683.48-151.net24.it) has quit (Read/Dead Error: Input/output error)
| |
| [23:09:33] <Stemby> A in esadecimale
| |
| [23:09:35] <Stemby> :)
| |
| [23:09:42] <amosse> ok
| |
| [23:09:46] <Stemby> è lo stesso numero in diverse basi
| |
| [23:10:03] <amosse> ok
| |
| [23:10:14] <Stemby> comuque, quel che conta è che il carattere numero 10 (decimale) è \n
| |
| [23:10:17] <Stemby> e così via
| |
| [23:10:24] <weirdo> basta lezioni noiose ma da oggi siamo tutti programmatori ! http://hackertyper.net/
| |
| [23:10:48] <Stemby> il carattere che significa '5' me lo trovi nella tabella ASCII?
| |
| [23:11:19] <Stemby> amosse: ↑
| |
| [23:11:31] <amosse> 53
| |
| [23:11:52] <Stemby> esatto
| |
| [23:12:05] <Stemby> quello che significa 'Y'?
| |
| [23:12:24] <amosse> 89
| |
| [23:12:47] <Stemby> esatto
| |
| [23:12:52] <Stemby> vedo che hai capito
| |
| [23:13:06] <amosse> quindi, per tornare all'esercizio
| |
| [23:13:10] <Stemby> in totale hai a disposizione 7 bit, quindi che numeri hai disponibili?
| |
| [23:13:13] <Stemby> un attimo
| |
| [23:13:37] <amosse> la metà
| |
| [23:13:40] <Stemby> ovvero?
| |
| [23:13:51] <Stemby> quanti e quali
| |
| [23:14:34] <Stemby> soluzione
| |
| [23:14:52] <Stemby> il numero più grande (in binario) con 7 bit quale sarà?
| |
| [23:15:05] <Stemby> amosse: sai cos'è un numero binario?
| |
| [23:15:08] <Stemby> (in base 2)
| |
| [23:15:15] <amosse> 99
| |
| [23:15:19] <Stemby> no
| |
| [23:15:39] <Stemby> in binario che cifre hai a disposizione?
| |
| [23:15:47] <Stemby> (binario = base 2)
| |
| [23:16:01] <amosse> eh qui casca l' asino..
| |
| [23:16:04] <amosse> la matematica
| |
| [23:16:08] <Stemby> hai solo 2 cifre
| |
| [23:16:24] <Stemby> 0 e 1
| |
| [23:16:27] <Stemby> ok?
| |
| [23:16:34] <amosse> 10
| |
| [23:16:42] <Stemby> cos'è 10?
| |
| [23:16:48] --> groll (~groll@Azzurra-195E4683.48-151.net24.it) has joined #debianizzati-corsi
| |
| [23:16:49] <Stemby> (e in che base?)
| |
| [23:17:04] <Stemby> allora
| |
| [23:17:07] <amosse> se hho a disposizione due cifre 0 e 1
| |
| [23:17:15] <Stemby> sì...?
| |
| [23:17:34] <amosse> il numero più grande sarà 11
| |
| [23:17:39] <Stemby> non direi
| |
| [23:17:51] <Stemby> in base 10 quante cifre hai disponibili?
| |
| [23:18:14] <amosse> 10 -> da 0 a 9
| |
| [23:18:25] <Stemby> e il numero più grande che puoi scrivere?
| |
| [23:18:40] <amosse> 99
| |
| [23:18:54] <Stemby> non esiste un numero più grande di 99???
| |
| [23:18:58] <Stemby> :)
| |
| [23:19:05] <Stemby> forse in seconda elementare
| |
| [23:19:13] <Stemby> ma ti assicuro che 100 esiste
| |
| [23:19:16] <Stemby> ma anche 101
| |
| [23:19:22] <Stemby> ma anche 102
| |
| [23:19:28] <Stemby> ma anche 100000000000000000
| |
| [23:19:34] <Stemby> ma anche 10000000000000000000000000000000000000000000000000000000000000000000000000000
| |
| [23:19:37] <Stemby> ecc.
| |
| [23:19:42] <Stemby> non esiste limite
| |
| [23:19:47] <Stemby> i numeri interi sono infiniti
| |
| [23:19:55] <amosse> ok
| |
| [23:19:57] <Stemby> questo in qualunque base
| |
| [23:20:15] <Stemby> però ho detto che hai a disposizione solo 7 bit
| |
| [23:20:29] <Stemby> il bit in base 2 corrisponde al carattere
| |
| [23:20:33] <Stemby> (in base 2!)
| |
| [23:20:44] <Stemby> quindi 7 bit = 7 cifre binarie
| |
| [23:20:59] <Stemby> quindi quale sarà il più grande numero in base 2 a 7 bit?
| |
| [23:21:30] <Stemby> facciamo un parallelo in base 10
| |
| [23:21:30] <amosse> 2222222
| |
| [23:21:34] <Stemby> no!
| |
| [23:21:40] <Stemby> il 2 non è una cifra disponibile
| |
| [23:21:45] <Stemby> hai solo 0 e 1
| |
| [23:21:59] <Stemby> dicevo
| |
| [23:22:05] <Stemby> è come se ti avessi chiesto:
| |
| [23:22:21] <amosse> 9999999
| |
| [23:22:21] <Stemby> in base 10, qual è il numero più grande che puoi scrivere usanto 7 caratteri?
| |
| [23:22:25] <Stemby> esatto
| |
| [23:22:42] <Stemby> invece usando 7 bit in base 2?
| |
| [23:22:57] <Stemby> *usando
| |
| [23:23:16] <Stemby> hai a disposizione solo 7 cifre
| |
| [23:23:26] <amosse> 2222222
| |
| [23:23:27] <Stemby> e le cifre possono essere solo o 0 oppure 1
| |
| [23:23:33] <Stemby> no!
| |
| [23:23:39] <Stemby> 2 non lo puoi usare!!!!
| |
| [23:23:50] <amosse> 1111111
| |
| [23:23:52] <Stemby> oh!
| |
| [23:24:05] <Stemby> in base 10 la cifra più grande è il 9
| |
| [23:24:15] <Stemby> poi si scavalla alle decinee
| |
| [23:24:22] <Stemby> o dalle decine alle centinaia
| |
| [23:24:24] <Stemby> ecc.
| |
| [23:24:27] <Stemby> ti è chiaro?
| |
| [23:24:37] <amosse> ok
| |
| [23:24:39] <Stemby> in base 2 la cifra più grande è 1
| |
| [23:24:51] <Stemby> poi, passi alle decine, centinaia, ecc.
| |
| [23:24:52] <amosse> ah ok
| |
| [23:24:56] <Stemby> proprio allo stesso modo
| |
| [23:25:11] <Stemby> 1111111 è il numero più grande a 7 bit
| |
| [23:25:18] <Stemby> che numero è?
| |
| [23:25:21] <Stemby> (in base 10)
| |
| [23:25:44] <amosse> 9999999
| |
| [23:25:47] <Stemby> come si converte da binario a decimale?
| |
| [23:25:50] <Stemby> nooooooooooooooooooooooo!
| |
| [23:25:53] <Stemby> scusa
| |
| [23:26:05] <Stemby> 0 binario = 0 decimale
| |
| [23:26:11] <Stemby> 1 binario = 1 decimale
| |
| [23:26:18] <Stemby> 10 binario = ?
| |
| [23:26:36] <Stemby> 3 decimale
| |
| [23:26:48] <Stemby> sorry
| |
| [23:26:50] <Stemby> 2 decimale
| |
| [23:26:58] <Stemby> 11 binario = 3 decimale
| |
| [23:27:08] <Stemby> 100 binario = 4 decimale
| |
| [23:27:10] <amosse> quindi:
| |
| [23:27:15] <Stemby> 101 binario = 5 decimale
| |
| [23:27:24] <Stemby> 110 binario = 6 decimale
| |
| [23:27:25] <amosse> binario -> 0, 1
| |
| [23:27:34] <Stemby> 111 binario = 7 decimale
| |
| [23:27:45] <Stemby> 1000 binario = 8 decimale
| |
| [23:27:55] <Stemby> 1001 binario = 9 decimale
| |
| [23:28:05] <Stemby> 1010 binario = 10 decimale
| |
| [23:28:09] <Stemby> ok?
| |
| [23:28:18] <Stemby> quindi?
| |
| [23:28:19] <amosse> ok
| |
| [23:28:29] <Stemby> come si trasforma un numero binario in decimale?
| |
| [23:28:55] <Stemby> ti consiglio di dare un'occhiata ai seguenti numeri binari:
| |
| [23:29:01] <Stemby> 1
| |
| [23:29:02] <Stemby> 10
| |
| [23:29:03] <Stemby> 100
| |
| [23:29:05] <Stemby> 1000
| |
| [23:29:16] <Stemby> e vedere a cosa corrispondono in decimale
| |
| [23:29:31] <amosse> dove lo trovo
| |
| [23:29:33] <Stemby> da lì dovresti essere in grado di capire qual è l'algoritmo
| |
| [23:29:39] <Stemby> te li ho scritti...
| |
| [23:29:50] <-- groll (~groll@Azzurra-195E4683.48-151.net24.it) has quit (Read/Dead Error: Input/output error)
| |
| [23:29:54] <amosse> ok
| |
| [23:30:31] <amosse> per la matematica é un problema....
| |
| [23:30:40] <amosse> *me
| |
| [23:30:48] <Stemby> è un problema da risolvere
| |
| [23:30:55] <Stemby> queste cose sono importantine
| |
| [23:31:12] <Stemby> soprattutto se ci si vuole abbassare di livello
| |
| [23:31:20] <Stemby> (in C è inimmaginabile non saperle)
| |
| [23:31:39] <amosse> ma scusa, quale mat c'é da sapere
| |
| [23:31:44] <Stemby> comuque quei numeri te li ho scritti
| |
| [23:31:59] <amosse> per la programmazione
| |
| [23:32:03] <amosse> ok
| |
| [23:32:27] <Stemby> mah, a dire il vero niente di trascendentale
| |
| [23:32:37] <amosse> tipo
| |
| [23:32:41] <Stemby> la matematica delle medie
| |
| [23:32:54] <amosse> se mi dai degli argomenti, me li guardo
| |
| [23:33:04] <Stemby> cambio di base
| |
| [23:33:19] <Stemby> poi non saprei, man mano vediamo
| |
| [23:33:32] <Stemby> comunque il cambio di base te lo sto spiegando ora
| |
| [23:33:43] <amosse> ok
| |
| [23:33:54] <Stemby> passare da binario a decimale è davvero semplice
| |
| [23:33:54] <amosse> am quei numeri che mi hai dato
| |
| [23:34:09] <amosse> tu li conosci a memoria o ci sono delle formule7
| |
| [23:34:10] <Stemby> e
| |
| [23:34:18] <Stemby> è come in base 10
| |
| [23:34:29] <Stemby> solo che hai solo 2 cifre a disposizione
| |
| [23:34:34] <Stemby> 0
| |
| [23:34:34] <Stemby> 1
| |
| [23:34:36] <Stemby> 10
| |
| [23:34:36] <Stemby> 11
| |
| [23:34:40] <Stemby> 100
| |
| [23:34:42] <Stemby> 101
| |
| [23:34:44] <Stemby> 110
| |
| [23:34:45] <Stemby> 111
| |
| [23:34:49] <Stemby> 1000
| |
| [23:34:50] <amosse> scusa
| |
| [23:34:51] <Stemby> 1001
| |
| [23:34:57] <amosse> ripeto
| |
| [23:35:01] <Stemby> sto contando in base 2
| |
| [23:35:16] <amosse> ok
| |
| [23:35:19] <Stemby> 0
| |
| [23:35:22] <Stemby> niente
| |
| [23:35:29] <Stemby> 1: unità piene
| |
| [23:35:39] <Stemby> 10: decine piene, unità vuote
| |
| [23:35:47] <Stemby> 11: decine e unità piene
| |
| [23:36:01] <Stemby> quindi se aumenti di uno, devi passare alla centinaia
| |
| [23:36:04] <Stemby> 100
| |
| [23:36:11] <Stemby> + 1?
| |
| [23:36:13] <Stemby> 101
| |
| [23:36:18] <Stemby> + 1?
| |
| [23:36:20] <Stemby> 110
| |
| [23:36:27] <Stemby> +1?
| |
| [23:36:30] <Stemby> fammelo tu
| |
| [23:36:34] <amosse> 111
| |
| [23:36:37] <Stemby> oh
| |
| [23:36:42] <Stemby> vedi che hai capito
| |
| [23:36:46] <Stemby> +1?
| |
| [23:36:56] <Stemby> passi alle migliaia
| |
| [23:36:57] <amosse> 1000
| |
| [23:36:59] <Stemby> esatto
| |
| [23:37:02] <Stemby> chiaro?
| |
| [23:37:06] <amosse> ok
| |
| [23:37:08] <weirdo> tranquillo, lo scorderai tanto in fretta quanto lo hai imparato
| |
| [23:37:22] <Stemby> adesso guarda a cosa corrispondono quei numeri in base 10
| |
| [23:37:26] <Stemby> in particolare:
| |
| [23:37:27] <Stemby> 1
| |
| [23:37:28] <Stemby> 10
| |
| [23:37:29] <Stemby> 100
| |
| [23:37:30] <Stemby> 1000
| |
| [23:37:41] <Stemby> 1 → 1
| |
| [23:37:45] <Stemby> 10 → 2
| |
| [23:37:49] <Stemby> 100 → 4
| |
| [23:37:55] <Stemby> 1000 →
| |
| [23:37:57] <Stemby> ?
| |
| [23:38:37] <amosse> 11 -> 3
| |
| [23:38:46] <Stemby> sì
| |
| [23:38:51] <Stemby> 1000 →
| |
| [23:38:53] <amosse> ok
| |
| [23:38:56] <Stemby> ?
| |
| [23:39:21] <amosse> 16
| |
| [23:39:26] <Stemby> no
| |
| [23:39:30] <Stemby> 8
| |
| [23:39:39] <amosse> ok *2
| |
| [23:39:43] <Stemby> esatto
| |
| [23:40:17] <amosse> quindi
| |
| [23:40:27] <Stemby> in pratica la formula per passare da binario a decimale è questa
| |
| [23:40:36] <Stemby> 100101010101111001
| |
| [23:40:43] <Stemby> non so che numero sia
| |
| [23:40:47] <Stemby> comunque si fa così
| |
| [23:40:51] <Stemby> si parte da destra
| |
| [23:41:01] <Stemby> prima cifra: 1
| |
| [23:41:29] <Stemby> la base è 2, quindi 2^0 = 1
| |
| [23:41:46] <Stemby> la seconda cifra è 0 → 0
| |
| [23:41:52] <Stemby> la terza è 0 → 0
| |
| [23:42:01] <Stemby> la quarta è 1
| |
| [23:42:24] <Stemby> quindi, 2^3 → 8
| |
| [23:42:33] <Stemby> la quinta è 1
| |
| [23:42:38] <Stemby> quindi:
| |
| [23:42:47] <Stemby> 2^4 → 16
| |
| [23:43:01] <Stemby> la sesta è 1
| |
| [23:43:16] <Stemby> 2^5 → 32
| |
| [23:43:20] <Stemby> eccetera
| |
| [23:43:27] <Stemby> poi fai la somma di tutti
| |
| [23:43:41] <amosse> scusa, cosa vuol il segno che usi
| |
| [23:43:48] <Stemby> 1+0+0+8+16+32+ ....
| |
| [23:43:55] <Stemby> elevamento a potenza
| |
| [23:44:08] <amosse> ok
| |
| [23:44:17] <Stemby> alla 0, alla prima, alla seconda, alla terza, ecc.
| |
| [23:44:26] <Stemby> qualsiasi numero elevato alla 0 dà 1
| |
| [23:44:34] <Stemby> qualsiasi numero elevato alla 1 dà se stesso
| |
| [23:44:35] <amosse> ok
| |
| [23:44:49] <Stemby> questo vale per tutte le basi
| |
| [23:44:55] <Stemby> (per passare a decimale)
| |
| [23:45:19] <Stemby> in base 2 eviti di moltiplicare la cifra per la base elevata alla posizione-1
| |
| [23:45:28] <Stemby> perché moltiplicare per 1 è inutile
| |
| [23:45:45] <Stemby> quindi ti basta fare l'elevamento a potenza
| |
| [23:45:50] <Stemby> per ogni cifra
| |
| [23:45:53] <Stemby> ok?
| |
| [23:46:00] <amosse> ok
| |
| [23:46:02] <Stemby> torniamo al discorso di prima
| |
| [23:46:05] <Stemby> 1111111
| |
| [23:46:11] <Stemby> trasformamelo in base 10
| |
| [23:46:32] <Stemby> partendo da destra:
| |
| [23:46:42] <Stemby> 2^0 +
| |
| [23:46:50] <Stemby> 2^1 +
| |
| [23:46:52] <Stemby> 2^2 +
| |
| [23:46:56] <Stemby> 2^3 +
| |
| [23:46:58] <Stemby> 2^4 +
| |
| [23:47:00] <Stemby> 2^5 +
| |
| [23:47:05] <Stemby> 2^6
| |
| [23:47:09] <Stemby> ------
| |
| [23:47:11] <Stemby> totale?
| |
| [23:47:57] <Stemby> 1 + 2 + 4 + 8 + 16 + 32 + 64
| |
| [23:48:01] <Stemby> quanto fa?
| |
| [23:48:29] <amosse> 127
| |
| [23:48:32] <Stemby> ok
| |
| [23:48:47] <Stemby> quello è il numero più grande disponibile nella tabella ASCII
| |
| [23:48:56] <Stemby> in totale quanti numeri hai a disposizione?
| |
| [23:49:22] <amosse> 128
| |
| [23:49:25] <Stemby> esatto!
| |
| [23:49:33] <Stemby> perché devi aggiungere lo 0
| |
| [23:49:37] <Stemby> 0 -- 127
| |
| [23:49:45] <Stemby> ottimo
| |
| [23:49:59] <amosse> da 0 a 255 / 2
| |
| [23:50:10] <Stemby> esatto
| |
| [23:50:20] <Stemby> 255 in binario come sarà?
| |
| [23:51:03] <amosse> ?
| |
| [23:51:17] <Stemby> 255 (base 10) → ? (base 2)
| |
| [23:51:34] <Stemby> trasforma 255 in base 2
| |
| [23:51:37] <Stemby> :)
| |
| [23:51:43] <Stemby> non serve fare conti
| |
| [23:51:50] <Stemby> è evidente
| |
| [23:52:16] <Stemby> 1111111 → 127
| |
| [23:52:26] <Stemby> 255 → ?
| |
| [23:53:06] <Stemby> amosse, dai
| |
| [23:53:13] <Stemby> non servono conti
| |
| [23:53:34] <amosse> 1 per 14 volte
| |
| [23:53:39] <Stemby> (è più facile passare da binario a decimale che il contrario)
| |
| [23:53:42] <Stemby> no!
| |
| [23:53:44] <Stemby> 8
| |
| [23:53:47] <Stemby> 8 bit
| |
| [23:53:51] <Stemby> 11111111
| |
| [23:54:07] <Stemby> infatti
| |
| [23:54:21] <Stemby> 127 + 2^7 cosa fa?
| |
| [23:54:33] <Stemby> 2^7 → ?
| |
| [23:54:52] <Stemby> due alla settima quanto fa?
| |
| [23:55:01] <amosse> 128
| |
| [23:55:03] <Stemby> esatto
| |
| [23:55:12] <Stemby> quella è la cifra che abbiamo aggiunto a sinistra
| |
| [23:55:16] <Stemby> (l'ottavo bit)
| |
| [23:55:26] <Stemby> gli altri 7 bit sono quelli di prima
| |
| [23:55:31] <Stemby> 128 + 127 = ?
| |
| [23:55:53] <amosse> 255
| |
| [23:55:56] <Stemby> et voilà
| |
| [23:56:03] <Stemby> 1111111 → 255
| |
| [23:56:14] <Stemby> per un totale di 256 numeri a disposizione
| |
| [23:56:19] <Stemby> ok?
| |
| [23:56:26] <amosse> si
| |
| [23:56:31] <Stemby> sorry
| |
| [23:56:36] <Stemby> ho dimenticato un bit
| |
| [23:56:42] <Stemby> 11111111 → 255
| |
| [23:56:47] <Stemby> ora è giusto
| |
| [23:56:51] <Stemby> 8 bit
| |
| [23:57:05] <Stemby> tornando alla tabella ASCII
| |
| [23:57:12] <Stemby> ha solo 7 bit
| |
| [23:57:17] <Stemby> quindi solo 128 numeri
| |
| [23:57:26] <Stemby> pochini...
| |
| [23:57:43] <Stemby> infatti in pratica permette di contenere solo i caratteri della tastiera americana
| |
| [23:57:48] <Stemby> niente accentate
| |
| [23:57:59] <Stemby> niente caratteri strani vari
| |
| [23:58:01] <Stemby> ok?
| |
| [23:58:04] <amosse> ok
| |
| [23:58:16] <Stemby> la tabella ASCII è tuttora valida
| |
| [23:58:19] <Stemby> ma limitatissima
| |
| [23:58:32] <Stemby> (pensa ai caratteri cinesi, tanto per dire)
| |
| [23:58:45] <Stemby> sono nate quindi delle estensioni
| |
| [23:58:53] <Stemby> a 8 bit
| |
| [23:59:15] <Stemby> passare da 7 bit a 8 bit significa raddoppiare i numeri disponibili
| |
| [23:59:25] <Stemby> (e dunque i caratteri utilizzabili)
| |
| [23:59:31] <amosse> ok
| |
| [23:59:45] <Stemby> problema: ASCII è uno standard riconosciuto universalmente
| |
| [23:59:53] <Stemby> le varie estensioni a 8 bit molto meno
| |
| [23:59:58] <Stemby> ce ne sono numerose
| |
| [00:00:00] - {Day changed to gio mag 5 00:00:00 2011}
| |
| [00:00:03] <Stemby> nessuna ha il predominio
| |
| [00:00:14] <Stemby> da qui nascono i problemi di encoding
| |
| [00:00:48] <Stemby> il carattere numero 210 di una certa tabella sarà probabilmente diverso dal 210 di un'altra
| |
| [00:00:50] <Stemby> chiaro?
| |
| [00:01:08] <amosse> ok
| |
| [00:01:13] <Stemby> i primi 128 (da 0 a 127) sono uguali per tutte le tabelle
| |
| [00:01:28] <Stemby> da 128 in poi è un caos
| |
| [00:01:35] <Stemby> tu scrivi è
| |
| [00:01:39] <Stemby> "è"
| |
| [00:01:44] <amosse> ok
| |
| [00:01:48] <Stemby> una tabella capisce "è"
| |
| [00:01:54] <Stemby> un'altra capisce un'altra roba
| |
| [00:02:15] <Stemby> UTF-8 è un'ulteriore evoluzione
| |
| [00:02:35] <amosse> ok
| |
| [00:02:50] <Stemby> http://it.wikipedia.org/wiki/UTF-8
| |
| [00:03:02] <Stemby> è uno standard che fa parte di unicode
| |
| [00:03:16] <amosse> ok
| |
| [00:03:21] <Stemby> è il tentativo più riuscito per cercare di tornare ad avere un'unica tabellona universale
| |
| [00:03:29] <Stemby> che contenga tutti i caratteri del mondo
| |
| [00:03:50] <Stemby> (e anche molti simboli di fantasia, caratteri di lingue inventate, ecc.)
| |
| [00:04:07] <Stemby> 1 byte = 8 bit
| |
| [00:04:25] <Stemby> unicode usa da 1 a 4 byte
| |
| [00:04:33] <Stemby> (per ogni carattere)
| |
| [00:04:37] <Stemby> scusa
| |
| [00:04:40] <Stemby> non unicode
| |
| [00:04:43] <Stemby> UTF-8
| |
| [00:04:47] <Stemby> ok?
| |
| [00:04:51] <amosse> ok
| |
| [00:05:11] <Stemby> ovviamente tutti i caratteri più importanti saranno nel primo byte
| |
| [00:05:12] <amosse> quindi fino a 32 bit
| |
| [00:05:17] <Stemby> in pratica sì
| |
| [00:05:27] <Stemby> che è un numero impressionante
| |
| [00:06:04] <amosse> ma scusa, questo cosa centra con i processori a 32 - 64?
| |
| [00:06:14] <amosse> niente
| |
| [00:06:53] <Stemby> >>> 2**32
| |
| [00:06:53] <Stemby> 4294967296
| |
| [00:07:03] <Stemby> hai tutti quei numeri a disposizione
| |
| [00:07:19] <Stemby> 4 miliardi e rotti
| |
| [00:07:21] <Stemby> :)
| |
| [00:07:29] <Stemby> ben altra rova rispetto a 128
| |
| [00:07:35] <Stemby> *roba
| |
| [00:07:41] <Stemby> dicevo
| |
| [00:08:19] <Stemby> le lettere accentate, caratteri tipo →øç eccetera saranno nel primo byte
| |
| [00:08:39] <Stemby> per questo non è ancora del tutto sbagliato dire che 1 byte = 1 carattere
| |
| [00:08:53] <Stemby> (in ASCII e in ASCII esteso è verissimo, invece)
| |
| [00:09:18] <Stemby> però se scrivi in cinese, senz'altro ogni carattere occuperà più di un byte
| |
| [00:09:22] <Stemby> non so dirti quanto
| |
| [00:09:26] <Stemby> *quanti
| |
| [00:09:36] <Stemby> ma sucuramente almeno 2 byte
| |
| [00:09:40] <Stemby> *sicuramente
| |
| [00:09:46] <Stemby> ok?
| |
| [00:09:52] <amosse> ok
| |
| [00:10:11] <Stemby> windows di default non usa ancora UTF-8, a quanto ne so
| |
| [00:10:41] <amosse> debian?
| |
| [00:10:42] <Stemby> (ma non ne sono certo, mi son perso gli ultimi 10 anni di sviluppi)
| |
| [00:10:51] <Stemby> debian assolutamente sì
| |
| [00:11:17] <amosse> ok
| |
| [00:11:27] <Stemby> $ locale
| |
| [00:11:27] <Stemby> LANG=it_IT.UTF-8
| |
| [00:11:27] <Stemby> LC_CTYPE="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_NUMERIC="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_TIME="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_COLLATE="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_MONETARY="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_MESSAGES="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_PAPER="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_NAME="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_ADDRESS="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_TELEPHONE="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_MEASUREMENT="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_IDENTIFICATION="it_IT.UTF-8"
| |
| [00:11:27] <Stemby> LC_ALL=
| |
| [00:11:34] <Stemby> controlla :)
| |
| [00:12:12] <Stemby> hai a disposizione una copia di win?
| |
| [00:12:28] <amosse> si
| |
| [00:12:48] <Stemby> ok
| |
| [00:12:54] <Stemby> allora l'esercizio è questo
| |
| [00:13:00] <Stemby> scrivi un file di testo in win
| |
| [00:13:16] <Stemby> son quasi certo che sarà codificato con una codifica diversa da UTF-8
| |
| [00:13:28] <Stemby> file di testo puro, eh, mi raccomando!
| |
| [00:13:41] <amosse> notepad
| |
| [00:13:44] <Stemby> quindi niente word
| |
| [00:13:46] <Stemby> esatto!
| |
| [00:13:51] <amosse> ok
| |
| [00:13:54] <Stemby> niente OOo, ecc.
| |
| [00:14:17] <Stemby> devi usare dei caratteri FUORI dalla tabella ASCII
| |
| [00:14:24] <Stemby> altrimenti non serve a niente
| |
| [00:14:39] <Stemby> come ti dicevo, per tutte le codifiche i primi 128 caratteri sono uguali
| |
| [00:14:47] <amosse> ok
| |
| [00:14:52] <Stemby> lettere accentate
| |
| [00:14:56] <Stemby> €
| |
| [00:15:01] <Stemby> ç
| |
| [00:15:05] <Stemby> ecc.
| |
| [00:15:17] <amosse> ok
| |
| [00:15:19] <Stemby> ovviamente puoi mischiali a caratter ASCII
| |
| [00:15:31] <Stemby> l'importante è che non ci siano solo caratteri ASCII
| |
| [00:15:39] <amosse> ok
| |
| [00:15:52] <Stemby> poi scrivi uno script
| |
| [00:16:30] <Stemby> che apra il file, cambi la codifica a UTF-8, e salvi un nuovo file secondo la nuova codifica
| |
| [00:16:38] <Stemby> ok?
| |
| [00:16:45] <Stemby> cosa ti serve?
| |
| [00:16:45] <amosse> ok
| |
| [00:16:52] <Stemby> 1) conoscere la codifica usata da win
| |
| [00:17:00] <Stemby> (Google è amico)
| |
| [00:17:29] <Stemby> 2) direi quasi senz'altro il parametro encoding della funzione open()
| |
| [00:17:45] <Stemby> http://docs.python.org/release/3.1.3/library/functions.html#open
| |
| [00:18:04] <Stemby> 3) quello che abbiamo appreso la volta scorsa e all'inizio di questa lezione
| |
| [00:18:31] <Stemby> ovvero: i metodi degli oggetti di tipo file
| |
| [00:18:35] <Stemby> nient'altro
| |
| [00:18:52] <Stemby> ok?
| |
| [00:19:01] <amosse> ci provo, anche se non é proprio banale
| |
| [00:19:10] <Stemby> no è così difficile, secondo me
| |
| [00:19:16] <Stemby> *non
| |
| [00:19:28] <amosse> provo
| |
| [00:19:28] <Stemby> mi aspetto una decina di righe o poco più
| |
| [00:19:53] <Stemby> poi il parametro encoding probabilmente non ti servirà mai più
| |
| [00:19:53] <amosse> ok
| |
| [00:20:08] <amosse> ok
| |
| [00:20:12] <Stemby> ma per lo meno avrai capito a fondo cos'è la codifica di un file
| |
| [00:20:14] <Stemby> :9
| |
| [00:20:20] <Stemby> notte</pre>
| |