Differenze tra le versioni di "Python Lezione 11 Giugno 2008"

Da GolemWiki.
Jump to navigation Jump to search
Riga 28: Riga 28:
  
 
quando noi abbiamo fatto il [[http://golem.linux.it/index.php/Lezione_4_Giugno#ESEMPIO_DELLA_SERATA: programma per calcolare le potenze]], abbiamo scritto diverse righe di codice.
 
quando noi abbiamo fatto il [[http://golem.linux.it/index.php/Lezione_4_Giugno#ESEMPIO_DELLA_SERATA: programma per calcolare le potenze]], abbiamo scritto diverse righe di codice.
per evitare ogni volta di riscrivere quelle righe, potremmo creare una funzione che fa esattamente quella cosa.
+
Alcune di queste erano per recuperare e controllare l'input dell'utente, altre proprio per calcolare la potenza del numero.
La funzione di definisce ''def''.
+
Se nel corso del nostro programma ci servisse ripetere il calcolo della potenza base**esponente (facendo finta che non ci sia l'operatore ** che fa esattamente quello che vogliamo) potremmo
 +
semplicemente fare copia-incolla di quelle righe ogni volta che ci servono. Poi ci accorgiamo che c'è un errore, che abbiamo quindi ripetuto n volte. E dobbiamo correggere n volte.
 +
Se avessimo creato una funzione, invece, ci sarebbe una sola definizione e n chiamate: una volta trovato l'errore basta correggerlo una volta sola.
 +
 
 +
La funzione di definisce usando ''def''.
 
Per crere una funzione dobbiamo scrivere: def -il nome della funzione- (-variabile1-,-variabile2-) :  
 
Per crere una funzione dobbiamo scrivere: def -il nome della funzione- (-variabile1-,-variabile2-) :  
 
es.
 
es.
 +
 
   def potenza (base,esponente):
 
   def potenza (base,esponente):
           result-1
+
           result = 1
           for I in xrange(esponente):
+
           for i in xrange(esponente):
 
                   result=result*base
 
                   result=result*base
 
           return result
 
           return result
 +
 +
return "ritorna" al chiamante il contenuto della variabile result.
 +
 +
quindi il nostro programma diviene
 +
 +
  
 
base è un parametro quindi quando chiamo potenza lui mi da type error
 
base è un parametro quindi quando chiamo potenza lui mi da type error

Versione delle 18:30, 13 giu 2008

QUESTI APPUNTI SONO UNA BOZZA IN ATTESA DI CORREZIONE E, PER QUESTO, NON ATTENDIBILI.


while

Simile al for, si usa per effettuare un ciclo di cui non sappiamo la lunghezza esatta, ovvero si cicla finché la condizione specificata non risulta vera. Torna utile quando vogliamo fare cicli infiniti, che con il for non possiamo fare in maniera "pulita" Può essere usato (a discapito della chiarezza) come un ciclo for: ad esempio, se volessimo ciclare 10 volte possiamo scrivere

  a = 0
  while a < 10:
       print a
       a = a + 1

che è del tutto equivalente a

  for a in xrange(10):
      print a

Altrimenti, per ciclare all'infinito

 while True:
     print "y"

che ha come effetto quello del programma yes dei sistemi *nix, ovvero stampa 'y' finchè non viene interrotto

LE FUNZIONI

quando noi abbiamo fatto il [programma per calcolare le potenze], abbiamo scritto diverse righe di codice. Alcune di queste erano per recuperare e controllare l'input dell'utente, altre proprio per calcolare la potenza del numero. Se nel corso del nostro programma ci servisse ripetere il calcolo della potenza base**esponente (facendo finta che non ci sia l'operatore ** che fa esattamente quello che vogliamo) potremmo semplicemente fare copia-incolla di quelle righe ogni volta che ci servono. Poi ci accorgiamo che c'è un errore, che abbiamo quindi ripetuto n volte. E dobbiamo correggere n volte. Se avessimo creato una funzione, invece, ci sarebbe una sola definizione e n chiamate: una volta trovato l'errore basta correggerlo una volta sola.

La funzione di definisce usando def. Per crere una funzione dobbiamo scrivere: def -il nome della funzione- (-variabile1-,-variabile2-) : es.

 def potenza (base,esponente):
         result = 1
         for i in xrange(esponente):	
                 result=result*base
         return result

return "ritorna" al chiamante il contenuto della variabile result.

quindi il nostro programma diviene


base è un parametro quindi quando chiamo potenza lui mi da type error potenza (2,8) lui mi da 256 altrimenti mi da il type error

se io do pot= potenza(2,8) ora pot è il risultato della potenza di due all'ottava.

Posso usare I parametri di default che devono stare dopo queli non di default

 def potenza (esponent, base=2):
         result-1
         for I in xrange(esponent):	
                 result=result*base
         return result

lui mi da l'errore solo quando eseguo, non me la da prima, in un linguaggio compilato se io lo compilo l'operatore me lo da subito. Potenza(8) lui ha valore di default due se do due valori lui usa il secondo valore e se ne strafrega del primo.

I parametri hanno la keyword potenza(base=2,esponente=8) questo modo di scrivere è un pò più chiaro meglio di potenza(2,8) che poi magari uno non ha chiaro cosa significhino quei due numeri.

Se base ce l'ho di default non posso scrivere potenza(8, base) lui mi da errore lui la prende come variabile.

Upper lower e questa cose qui sono funzioni.

IMPORTARE UN FILE

ammetto che qui mi sono persa.

tutto è nato dalla domanda di raffaele:Quando creiamo il file, ecc....le variabili che validità hanno?

abbiamo parlato del main, che non viene esguito se il file viene importato. Abbiamo fatto degli esempi che io non ho avuto il tempo di copiare.

Abbiamo anche parlato di dove il sistema va a cercare un file, del path, ecc... Abbiamo fatto un esempio con un file chiamato python.tmp.py, abbiamo detto come fare ad importarlo e abbiamo fatto un esempio pratico che ci faceva capire che, poichè il file era importato, non esguiva il main.Purtroppo mi sono persa l'esempio.


MODULI GANZI

abbiamo parlato di alcuni moduli con cui fare cose carine, mi sono persa la maggior parte degli esempi, ma metterò l'elenco dei moduli: os walk mkdir

SOTTODIRECTORY

qui ero in stato comatoso.Mi sono veramente eclissata.


ESERCIZIO DELLA SERATA

Funzione che rivolta le stringhe. abbiamo fatto vari tentativi ma poi ci siamo accorti che esiste la funzione reversed

  • mi sono persa la parte prima*
 reversed(a)
 for elem in reversed(a):
         print elem