LinuxLudus: Pytoni e bottiglie

Daniele Zambelli daniele.zambelli@inwind.it
Ven 13 Giu 2008 09:15:05 CEST


Alle giovedì 12 giugno 2008, Valerio Pachera ha scritto:
> Ho trovato un po' di tempo per studiare le tue modifiche.
> Ne ho fatta qualche altra (vedi file allegato) e ho qualche domanda:
>
>
>         if pot_name.lower() == "quit":
>             return None, None
>
> perchè due volte None?

La funzione control_input viene usata per instanziare 2 identificatori 
(caricare 2 variabili):

    p0, p1 = control_input(pots)

restituisce quindi 2 valori anche quando termina indicando che è stato 
inserito "quit".

Non è l'unica soluzione ma è quella che preferisco. 

> def control_input(pots):
>   ho inserito il messaggio "inserisci i contenitori" dopo ogni errore
> per una questione di "grafica".
>   Il messaggio l'ho inserito nell'array messages["inserisci"]
>
>
> def instructions():
>     Ho allineato il messaggio delle capienza con i successivi:
>     print "\t\t\t\tA\tB\tC"
>     print "capienza\t\t\tA: 80\tB: 50\tC: 30"

Questo è un buon intervento.

> while True:
>     ...
>     if p0==None: break
>     #questo controllo è inutile poichè la funzione control_input(pots)
> restituisce un messaggio se la stringa passata è vuota ( != 2)

Non proprio. La funzione control_input restituisce (None, None), non quando la 
stringa inserita è vuota, in quel caso il ciclo while non termina.
Viene restituito (None, None), quando l'utente scrive "quit". In questo caso 
anche il cilco principale deve terminare immediatamente. Senza questa 
istruzione, quando l'utente scrive "quit", il programma termina in modo 
irregolare (con un errore).

> Domanda:
> # ---8<---

Era solo un segno per indicare dove iniziava e terminava il codice, per 
separarlo dal messaggio. Mai visto in nessun codice Python!

> Complimenti, il programma riscritto in questo modo è più breve e più
> elegante. Alcune delle cose da te usate non le ho ancora studiate (ad
> esempio il dizionario di istanze o gli strani %s).

Un dizionario lega ad oggetti immutabili, come stringhe (nel nostro caso) o 
numeri o tuple, oggetti qualunque. Quindi, visto che in base alla stringa 
immessa doveva essere eseguito il metodo di un oggetto, mi è sembrata la 
soluzione più ovvia legare, in un dizionario, la stringa all'oggetto.

Gli strani %s sono dei segnaposti usati nella costruzione-formattazione di 
stringhe:

>>> s="Questa %s contiene %s %s" % ("stringa", 3, "'segnaposti'")
>>> s
"Questa stringa contiene 3 'segnaposti'"

Io trovo comodo formattare le stringhe in questo modo. Questo metodo fornisce 
diverse possibilità.

Potrebbe essere interessante memorizzare in una lista le mosse effettuate dal 
giocatore.

Ciao

-- 

Daniele                        www.fugamatematica.blogspot.com

                          giusto!
  _o)  (o_       (o_ _o)  nel verso
-./\\  //\.-     //\ /\\  forse è perché non guardiamo le cose
 _\_V  V_/_      V_/ \_V  Quando non ci capiamo,


Maggiori informazioni sulla lista linuxludus