[Python] Liste collezioni, propietà
Enrico Franchi
enrico.franchi a gmail.com
Dom 24 Feb 2008 11:09:32 CET
On Feb 23, 2008, at 9:56 PM, Alberto Aliberti wrote:
> Vorrei creare un tool per la generazione di statistiche sui database
> scacchistici. Da quello che ho capito , mi potrebbe essere utile
> lavorare con
> le "liste" di Python .
Potrebbe. Chissà.
> 1- Qual'è la massima estensione (lunghezza) di una lista di stringhe
> in Python ?
Dipende dalle stringhe! Cioè tipo se ogni stringa pesa un GB, beh, non
è inverosimile che inchiodi tutto con una lista di una ventina di
elementi. :)
Scherzi a parte, il problema è IMHO malposto. Puoi considerare una
lista come un tipo illimitato. Il problema è che molto probabilmente,
ancora prima di arrivare vicino ad eventuali limiti fisici
dell'interprete e/o della macchina, hai performance inaccettabili.
Ma questo vale anche in C o in C++, per inteso. Se gestisci male la
memoria e/o carichi troppa roba in RAM, inchiodi un po' tutto.
> 2- Ho letto che le dichiarazioni di variabili all'interno di una
> lista , si separano con una virgola - (1,2,3,). Le mosse di scacchi
> sono scritte separate da uno
> spazio e da un numero (1. d4 Cf6 2. c4 e6). Si può sostituire lo
> spazio alla virgola? (per dichiarare le variabili ovviamente).
Ti vedo estremamente confuso. In primo luogo quelle che chiami
'liste', sono 'tuple'. In secondo luogo il concetto di 'dichiarazione'
di variabile è un po' problematico in Python. Tipicamente le variabili
sono in effetti 'nomi'. E i nomi possono essere bound o un-bound. Sono
unbound prima che li bindi (wow!). E ovviamente usarli provoca errore.
Dopo averli bindati (per dirla semplice, ci hai fatto sopra un
assegnamento) sono bindati ad un dato oggetto Python e puoi chiamarlo
con quel nome.
A questo punto, non so rispondere alla tua domanda, poiché la tua
domanda non ha molto senso. Non ha senso poichè non stai 'dichiarando'
variabili (e non stai nemmeno bindandole, in effetti). In ultimo, stai
chiedendo di *cambiare* la sintassi di python. Che non ha senso. Se
voglio fare capire a python un file html, non è che cambio la sintassi
del linguaggio: scrivo un parser che mi tira dentro html in modo a me
congeniale (btw, prima di scriverlo, ne cerco uno -- e ne trovo a
pacchi).
> Ora avendo la risposta a queste due domande , credo di avere gli
> strumenti
> per "importare" in Python una partita "singola" . Il problema è :
> per importare più partite da un database , come posso "dividere" le
> partite ? Cioè come posso fare sapere a Python quando finisce una
> partita e inizia una nuova ? Se importassi le partite manualmente ,
> una a una , non ci sarebbe problema ,
> potrei scrivere qualsiasi codice di programma e crearmi un database
> specifico, ma l'utilità dell'applicazione verebbe a meno. Io devo
> potere importare "automaticamente" le partite da un database
> esistente , o da una copia testuale di esso (un database di partite
> discacchi posso convertirlo in formato TXT,HTML,RTF o PGN -pgn è lo
> standar per i database di scacchi).
Dimentica quello che hai chiesto sopra: tu in pratica per prima cosa
vuoi avere un modulo che parsi i files pgn.
Avendo questo, è lui che si prende carico di gestire il formato e
farti maneggiare le partite.
Posso suggerire:
http://mail.python.org/pipermail/python-list/2005-September/342833.html
http://www.koders.com/python/fidC6D1208DF38275760E08D02FEFBDC5A583C28620.aspx?s=game#L47
che viene da
http://berlios.chessviper.org.uk/
e poi
http://www.gnomefiles.org/app.php/PyChess
http://pychess.googlepages.com/
L'ultimo è un programma completo che ovviamente contiene anche codice
per maneggiare i pgn. Puoi prendere tale codice e usarlo.
A questo punto, cercherei di convincerti a *riflettere* sul problema
che hai, chiarificarti in testa cosa devi fare da un punto di vista
*logico*, esporre quello, poi vediamo tutti insieme come fare ad
implementarlo in Python.
More information about the Python
mailing list