Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Programmazione/Python"
Differenze tra le versioni 27 e 46 (in 19 versioni)
Versione 27 del 26/09/2006 11.52.29
Dimensione: 14097
Commento:
Versione 46 del 11/04/2007 15.57.48
Dimensione: 5234
Autore: DavideLuigi
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 4: Linea 4:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]||
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">[[TableOfContents]]||
Linea 9: Linea 8:
Python è un linguaggio di programmazione ideato da Guido Von Rossum nel 1991 e derivato da un precedente linguaggio chiamato ABC.
È interpretato e quindi caratterizzato da una grande portabilità su differenti piattaforme (Linux, Windows, Mac, ...).[[BR]]
Python è estensibile tramite il linguaggio C. Può inoltre appoggiarsi a molte famose librerie scritte in C o C++ per la creazione di GUI (wxpython, pygtk...), tool per lo svilippo di giochi (pygame, pysdl...), database (mysqldb, ...).[[BR]]
È un linguaggio ad alto livello, ha una sintassi molto piacevole e intuitiva (ideale per chi si avvicina alla programmazione). I programmi scritti in python risultano spesso molto sintetici ed eleganti nella forma (ma ricordiamo che tutto dipende anche dallo stile personale del programmatore! ;) ).[[BR]]
È nativamente un linguaggio orientato agli oggetti ma a differenza di altri linguaggi come il java permette anche uno stile procedurale e/o funzionale.[[BR]]
Ideale per realizzare applicazioni velocemnete, è utilizzato per una vasta gamma di scopi: scripting, creazione di programmi completi, estensioni di programmi scritti in C, realizzazione di prototipi di applicazioni che andranno poi riscritte in altri linguaggi.
'''Python''' è un linguaggio di programmazione ideato da Guido Von Rossum nel 1991 e derivato da un precedente linguaggio chiamato ABC.
È interpretato e quindi eseguibile su ogni piattaforma per la quale ne esista l'interprete (Linux, Windows, Mac, Symbian ...).
Linea 16: Linea 11:
Python può appoggiarsi a diverse librerie per la creazione di GUI (wxpython, pygtk...), tool per lo sviluppo di giochi (pygame, pysdl...), per la lettura di file mpeg (pymad), database (mysqldb, ...).

È un linguaggio ad alto livello, ha una sintassi molto piacevole e intuitiva (ideale per chi si avvicina alla programmazione). I programmi scritti in python risultano spesso molto sintetici ed eleganti nella forma (ma ricordiamo che tutto dipende anche dallo stile personale del programmatore! ;) ).

È nativamente un linguaggio orientato agli oggetti ma a differenza di altri linguaggi come il java permette anche uno stile procedurale e/o funzionale.

Ideale per realizzare applicazioni velocemente, è utilizzato per una vasta gamma di scopi: scripting, creazione di programmi completi, estensioni di programmi scritti in C, realizzazione di prototipi di applicazioni che andranno poi riscritte in altri linguaggi.
Linea 19: Linea 21:
Con l'installazione predefinita di Ubuntu l'interprete python viene già installato. In caso contrario, è sufficiente installare il pacchetto ''python'' da utilizzando [:SynapticHowto:Synaptic] o da riga di comando: {{{ Con l'installazione predefinita di Ubuntu l'interprete python è già presente nel sistema. In caso contrario, è sufficiente installare il pacchetto ''python'' da utilizzando [:SynapticHowto:Synaptic] o da riga di comando: {{{
Linea 38: Linea 40:
Una volta avviato l'interprete, impariamo a usarlo: {{{ Una volta avviato l'interprete, impariamo ad usarlo: {{{
Linea 45: Linea 47:
}}}
Per indicare i blocchi di codice si usa l'indentazione.
L'indentazione non è quindi solo una buona abitudine ma in Python è __obbligatoria__.
Ad esempio il codice appartenente ad un ''ciclo'' __deve__ essere indentato: {{{
 >>>> i=0
>>> while i < 10:
... i=i+1
... print "il doppio di",
... print i,
... print " e' ",
... print i*2
...
il doppio di 1 e' 2
il doppio di 2 e' 4
il doppio di 3 e' 6
il doppio di 4 e' 8
il doppio di 5 e' 10
il doppio di 6 e' 12
il doppio di 7 e' 14
il doppio di 8 e' 16
il doppio di 9 e' 18
il doppio di 10 e' 20
>>>
}}}

Altrimenti succede questo: {{{
>>> i=0
>>> while i < 10:
... i=i+1
  File "<stdin>", line 2
    i=i+1
    ^
IndentationError: expected an indented block
>>>
Linea 56: Linea 92:
print "Hello World!" print "Ciao mondo!"
Linea 59: Linea 95:
Salviamo il file come `hello.py` e impostiamone i permessi di esecuzione: {{{
chmod a+x hello.py
Salviamo il file come `hello.py` e proviamo ad eseguire lo script: {{{
python ciao.py
Linea 63: Linea 99:
Ora eseguiamo lo script: {{{
python hello.py
Se non si è sbagliato qualcosa, si dovrebbero leggere le parole "Ciao mondo!" stampate a video.

Impostando i permessi di esecuzione sul nostro script: {{{
chmod u+x ciao.py
Linea 67: Linea 105:
Se non si è sbagliato qualcosa, si dovrebbero leggere le parole "Hello World!" stampate a video. potremo eseguirlo senza anteporre niente: {{{
ciao.py
}}}

questo grazie alla prima riga dello script, che serve proprio a richiamare il comando python per noi.
Linea 71: Linea 113:
Ora che vi abbiamo un po' incuriosito vi proponiamo in questa sezione diversi script esemplificativi a difficoltà crescente. Ora che vi abbiamo incuriosito un po' vi proponiamo, nelle pagine a seguire, diversi script esemplificativi a difficoltà crescente:
Linea 73: Linea 115:
[[Immagine(Icone/Piccole/note.png,,left)]] Tutto ciò che viene scritto preceduto dal carattere # è considerato dall'interprete come un commento.[[BR]][[BR]]
[[BR]]
[[Anchor(areatriangolo1)]]
{{{#!python
#!/usr/bin/python#
import sys
import string
import math
''' questa è un'area di commento che uso per indicare cosa fa il programma o sorgente o script.
    Il programma principale o il main, calcola l'area di un triangolo qualsiasi noti i suoi tre
    lati usando la formula di Erone.
    Formula sqrt p*(p-a)*(p-b)*p(-c) sqrt = radice quadrata, p = (a+b+c)/2 a,b,c lati
    Salvatelo sul disco con il nome che vi propongo AreaTriangolo.py o come più vi piace
'''
a = input('inserisci il primo lato ')
print ' primo lato = ',a
b = input('inserisci il secondo lato ')
print ' secondo lato = ',b
c = input('inserisci il terzo lato ')
print ' terzo lato = ',c
print
print " ora calcolo l'area di questo triangolo"
print
p = (a+b+c)/2
s = math.sqrt(p*(p-a)*(p-b)*(p-c))
 * [:LinguaggioPython/Listati:LinguaggioPython/Listati] [[BR]]
 Esempi di alcuni programmi scritti in Python a difficoltà crescente
Linea 99: Linea 118:
print " l'area del triangolo e' =" ,s
}}} ''Listato del programma Area``Triangolo.py''
[[BR]][[BR]]
 * [:LinguaggioPython/GUI:LinguaggioPython/GUI] [[BR]]
 Esempi di alcuni programmi scritti in Python con semplice interfaccia grafica
Linea 103: Linea 121:
Il programma precedente termina se durante l'inserimento dei dati, per errore, viene digitato un carattere non numerico. È necessario quindi inserire un controllo sul dato immesso. A questo scopo è stato preparato questo altro programmino che salviamo col nome `AreaTriangolo2.py`:
[[Anchor(areatriangolo2)]]
{{{#!python
#!/usr/bin/python
import sys
import math
import string
i = 0
l=[]
while True:
 a= raw_input('inserisci il '+str(i+1)+' lato ')
        for j in range(len(a)) :
  errato = 'F'
  if a[j] in string.digits:
   errato = 'F'
   continue #continua il ciclo for
  else:
   errato = 'T'
   print "hai digitato qualcosa che non è un numero.Riprova"
   break # termina il ciclo for
 if errato =='T':
  continue #continua il ciclo while
   
 i +=1
 l.append(float(a)) # completata la verifica che il dato inserito e' una cifra viene trasformato in un numero a
                           # virgola mobile e inserito in un array
        if errato =='F'and i <3:
  # questo controllo ci serve per riprendere l'inserimento dei dati dopo aver completato il controllo
                # sul dato precedente
  continue # continua il ciclo while per passare al successivo input
 elif errato =='F' and i >=3:
 * [:LinguaggioPython/Rurple:LinguaggioPython/Rurple] [[BR]]
 Imparare a programmare in Python nell'ambiente RURPLE
Linea 135: Linea 124:
  print ' primo lato = ',l[0]
  print
  print ' secondo lato = ',l[1]
  print
  print ' terzo lato = ',l[2]
  print
  p = (l[0]+l[1]+l[2])/2.0 # calcola il semi perimetro
  if p > l[0] and p>l[1] and p >l[2]:
   print " ora calcolo l'area di questo triangolo"
   break # esce dal ciclo while per fine input
  else:
   print "questi dati non possono rappresentare i lati di un triangolo. Riprova "
   i =0
   l=[]
   continue # continua nel ciclo while per ricominciare i nuovi input
 
 
  
 
= Ulteriori risorse =
Linea 155: Linea 126:
print  * [http://www.python.it/]: Il sito di riferimento per i programmatori python italiani! Qui potete trovare le traduzioni in italiano della documentazione ufficiale nonchè le FAQ sul linguaggio.
 * [http://www.python.org/]: Il sito ufficiale del linguaggio python. Trovate la documentazione in inglese aggiornata all'ultima versione dell'interprete, in più tutte le novità e le iniziative che ruotano intorno a questo linguaggio.
 * [http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm Pensare da informatico] di Allen B. Downey, Jeffrey Elkner e Chris Meyers.
 * [http://www.python.it/doc/AGauld/index.html Imparare a programmare] di Alan Gauld: Due guide sull'uso del linguaggio Python adatte anche a chi in generale non ha esperienza nell'ambito della programmazione.
Linea 157: Linea 131:
s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))

print " l'area del triangolo e' =" ,s
print
print "Fine programma "
}}} ''Listato del programma Area``Triangolo2.py''
[[BR]][[BR]]

Mostriamo anche un'alternativa che utilizza le classi e la gestione delle eccezioni modificando il programma precedente:
{{{#!python
#!/usr/bin/python

# Importiamo la funzione sqrt (radice quadrata) dal modulo math
from math import sqrt

# Definiamo una classe Triangolo con tre metodi:
# un costruttore, un metodo che calcola il perimetro e uno che calcola l'area del triangolo.
class Triangolo:

      # Attributi della classe (le misure dei tre lati)
      a, b, c = 0, 0, 0

      # Metodo costruttore
      def __init__(self,a,b,c):
         # Controlliamo se i tre valori dati possono effettivamente essere le misure dei lati di un triangolo.
         # Caso contrario solleviamo una bella eccezione!
         if ((a+b>c) and (a+c>b) and (b+c>a)):
            self.a=a
            self.b=b
            self.c=c
         else: raise Exception

      # Metodo che calcola il perimetro
      def perimetro(self):
         return self.a + self.b + self.c

      # Metodo che calcola l'area (tramite formula di Erone)
      def area(self):
         p=self.perimetro()/2.0
         return sqrt(p*(p-self.a)*(p-self.b)*(p-self.c))


 
while True:
      # Chiediamo all'utente di immettere le misure dei lati
      print "\nInserire le misure dei lati:"
      lati=[]
      for lato in ['a','b','c']:
          while True:
               try :
                  l=raw_input("\tMisura del lato "+lato+": ")
                  lati.append(float(l))
                  break
               except ValueError:
                  print "\nDevi inserire valori numerici. Riprova.\n"

      try :
         # Creiamo una nuova istanza della classe Triangolo.
         # In pratica facciamo una chiamata al suo metodo costruttore.
         # Sarebbe stato lo stesso scrivere "triangolo=Triangolo.__init__(a,b,c)"
         triangolo=Triangolo(lati[0],lati[1], lati[2])

         # Utilizziamo i metodi definiti in precedenza per ottenere perimetro ed area dell'oggetto triangolo,
         # e stampiamo a video i risultati.
         print ""
         print "Perimetro = ", triangolo.perimetro()
         print "Area = ", triangolo.area()

         # Chiediamo all'utente se intende terminare il programma.
         exit=raw_input("\nUscire [digitare 's' per confermare]? ")
         print ""
         if exit=="s": break

      except:
         print "\nUn triangolo con queste misure non esiste. Riprova."

}}} ''Listato del programma Area``Triangolo2.py con eccezioni''
[[BR]][[BR]]

Ora supponiamo di dover calcolare l'area di un appezzamento di terreno di svariati ettari scomposto in un numero finito di triangoli.[[BR]]
Una volta nota l'area, supponiamo che debba essere divisa, per volontà testamentaria, in tre parti in funzione dell'età di tre fratelli i cui nomi sono Angelo, Alberto, Amilcare o come volete voi.

Useremo lo stesso programma [#areatriangolo2 AreaTriangolo2.py], con qualche modifica o aggiunta, che chiameremo `AreaTriangolo3.py`: {{{#!python
#!/usr/bin/python
import sys
import math
import string
# fase di input
nomi = []
eta= []
lati= []
x= 1
while x <=3:
 a= raw_input('Inserici nome '+str(x)+' fratello ')
 #verifichiamo l'input immesso
 errore = 'F'
 for i in range(len(a)):
  if a[i] in string.letters:
   continue # continua il ciclo for
  else:
   if i <= len(a):
    print "errore nell'immettere il nome .riprova"
    errore = 'T'
    break # esce dal ciclo for
 if errore == "T":
  continue # continua il ciclo while costringendo a reinserire il dato immesso prima in maniera errata
 else:
  # lo rendiamo tutto maiuscolo indipendentemente se lo sia o meno
  nomi.append(string.upper(a))
  print nomi
  x +=1 # questo incremento ci serve per poter distinguere nella immissione a quale persona assegnare il nome
  
#ora prendiamo in input le loro eta
x = 0

while x < range(len(nomi)):
 
 a= raw_input("inserisci l'eta di "+nomi[x]+' ')
        for j in range(len(a)) :
  errato = 'F'
  if a[j] in string.digits:
   errato = 'F'
   continue #continua il ciclo for
  else:
   errato = 'T'
   print "hai digitato qualcosa che non è un numero.Riprova"
   break # termina il ciclo for
 if errato =='T':
  continue #continua il ciclo while
   
 x +=1
 eta.append(int(a))
        if errato =='F'and x <3:
  
  continue # continua il ciclo while per passare al successivo input
 elif errato =='F' and x >=3:
  print ' Eta di' +nomi[0] +" "+ str( int(eta[0]))
  print
  print ' Eta di' +nomi[1] +" "+ str( int(eta[1]))
  print
  print ' Eta di' +nomi[2] +" "+ str( int(eta[2]))
  print
  break
#input dei dati per il calcolo dell'area dell'appezzamento
  
i = 0
l=[]
tria = []
while True:
 a= raw_input('inserisci il '+str(i+1)+' lato ')
        for j in range(len(a)) :
  errato = 'F'
  if a[j] in string.digits:
   errato = 'F'
   continue #continua il ciclo for
  else:
   errato = 'T'
   print "hai digitato qualcosa che non è un numero.Riprova"
   break # termina il ciclo for
 if errato =='T':
  continue #continua il ciclo while
   
 i +=1
 l.append(float(a))
        if errato =='F'and i <3:
  # questo controllo verifica se abbiamo terminato i dati in input relativi ad un triangolo
  continue # continua il ciclo while per passare al successivo input
 elif errato =='F' and i >=3:
                # qui avendo termianto l'input dei dati relativi ad un trinagolo li ripresenta a video per maggior chiarezza
  print ' primo lato = ',l[0]
  print
  print ' secondo lato = ',l[1]
  print
  print ' terzo lato = ',l[2]
  print
  p = (l[0]+l[1]+l[2])/2.0
  if p > l[0] and p>l[1] and p >l[2]:
   print " l'area di questo triangolo e' calcolabile"
   tria.append(l)
   l=[]
   si = raw_input(" hai finito di immettere i lati dei triangoli ? conferma con S/s ")
   if si == "S" or si =='s':
    print "Inizia la fase di calcolo "
    break # esce dal ciclo while per fine input
   else:
    i =0
    l=[]
    continue # continua nel ciclo while per input dati nuovo triangolo
  else:
   print "questi dati non rappresentano i lati di un triangolo. Riprova "
   i =0
   l=[]
   continue # continua nel ciclo while perche i dati in input del triangolo erano errati
 
 
#fase di calcolo area appezzamento
n = len(tria) # il calcolo dell'area verrà ripetuto n volte una per ogni triangolo

p = 0
stot = 0
for i,l in enumerate(tria):
 for j in range( len(l)):
  print l[j]
         p = p+l[j]
        print "semiper. nel "+str(i+1)+ " triangolo = "+ str(p/2.0)
        print
 p=p/2.0
 s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))
 print "area "+str(i+1)+ " triangolo = "+ str(s)
 print
 stot = stot +s
 p=0
print
print "l'area totale dell'appezamento di terreno e di mq " + str(stot)
print
print "ora calcoliamo quanto terreno spetta a ciascuno dei tre fratelli"

seta = 0
for i in eta:
 seta=seta+i
 
 
areau =(stot/seta)

for i in eta:
 a =areau*i
 nomi.append(a)
for i in range(0,3):
 print "l'area spettante a " +nomi[i] + " somma mq. "+ str(nomi[i+3])
        print
 
print' Fine programma '

}}} ''Listato del programma Area``Triangolo3.py''
[[BR]][[BR]]

Questo programma cosi com'è realizzato è un po' troppo lungo e considerati i numerosi cicli in esso contenuto può farci incorrere in errori. Come possiamo renderlo piu snello e piu facilemnte governabile?

= Risorse =

 * [http://www.python.it/] {it} [[BR]]
 Il sito di riferimento per i programmatori python italiani! Qui potete trovare le traduzioni in italiano della documentazione ufficiale nonchè le FAQ sul linguaggio.
 
 * [http://www.python.org/] {en} [[BR]]
 Il sito ufficiale del linguaggio python. Trovate la documentazione in inglese aggiornata all'ultima versione dell'interprete, in più tutte le novità e le iniziative che ruotano intorno a questo linguaggio.
Linea 403: Linea 132:
CategoryNuoviDocumenti CategoryDaRevisionare CategoryProgrammazione

BR

Introduzione

Python è un linguaggio di programmazione ideato da Guido Von Rossum nel 1991 e derivato da un precedente linguaggio chiamato ABC. È interpretato e quindi eseguibile su ogni piattaforma per la quale ne esista l'interprete (Linux, Windows, Mac, Symbian ...).

Python può appoggiarsi a diverse librerie per la creazione di GUI (wxpython, pygtk...), tool per lo sviluppo di giochi (pygame, pysdl...), per la lettura di file mpeg (pymad), database (mysqldb, ...).

È un linguaggio ad alto livello, ha una sintassi molto piacevole e intuitiva (ideale per chi si avvicina alla programmazione). I programmi scritti in python risultano spesso molto sintetici ed eleganti nella forma (ma ricordiamo che tutto dipende anche dallo stile personale del programmatore! ;) ).

È nativamente un linguaggio orientato agli oggetti ma a differenza di altri linguaggi come il java permette anche uno stile procedurale e/o funzionale.

Ideale per realizzare applicazioni velocemente, è utilizzato per una vasta gamma di scopi: scripting, creazione di programmi completi, estensioni di programmi scritti in C, realizzazione di prototipi di applicazioni che andranno poi riscritte in altri linguaggi.

Installazione

Con l'installazione predefinita di Ubuntu l'interprete python è già presente nel sistema. In caso contrario, è sufficiente installare il pacchetto python da utilizzando [:SynapticHowto:Synaptic] o da riga di comando:

sudo apt-get install python

Verifica della configurazione

Bene ora non resta che lanciare l'interprete interattivo e fare pratica.

Aprire un terminale e digitare:

python

Dovrebbe apparire qualcosa del tipo:

Python 2.4.3 (#2, Apr 27 2006, 14:43:58)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Semplici comandi

Una volta avviato l'interprete, impariamo ad usarlo:

>>> print  "Hello World!"
Hello World!
>>> print  2+3
5
>>> print  "2 + 3 = ",  2+3
2 + 3 = 5

Per indicare i blocchi di codice si usa l'indentazione. L'indentazione non è quindi solo una buona abitudine ma in Python è obbligatoria. Ad esempio il codice appartenente ad un ciclo deve essere indentato:

 >>>> i=0
>>> while i < 10:
...     i=i+1
...     print "il doppio di",
...     print i,
...     print " e' ",
...     print i*2
...
il doppio di 1  e'  2
il doppio di 2  e'  4
il doppio di 3  e'  6
il doppio di 4  e'  8
il doppio di 5  e'  10
il doppio di 6  e'  12
il doppio di 7  e'  14
il doppio di 8  e'  16
il doppio di 9  e'  18
il doppio di 10  e'  20
>>>

Altrimenti succede questo:

>>> i=0
>>> while i < 10:
... i=i+1
  File "<stdin>", line 2
    i=i+1
    ^
IndentationError: expected an indented block
>>>

Usciamo dall'interprete premendo «Ctrl+D», oppure digitando:

>>> import sys
>>> sys.exit()

Proviamo ora a realizzare un piccolo script.

Apriamo un editor di testo qualsiasi e inseriamo le seguenti righe:

   1 #!/usr/bin/python
   2 print  "Ciao mondo!"

Salviamo il file come hello.py e proviamo ad eseguire lo script:

python ciao.py

Se non si è sbagliato qualcosa, si dovrebbero leggere le parole "Ciao mondo!" stampate a video.

Impostando i permessi di esecuzione sul nostro script:

chmod u+x ciao.py

potremo eseguirlo senza anteporre niente:

ciao.py

questo grazie alla prima riga dello script, che serve proprio a richiamare il comando python per noi.

Esempi

Ora che vi abbiamo incuriosito un po' vi proponiamo, nelle pagine a seguire, diversi script esemplificativi a difficoltà crescente:

  • [:LinguaggioPython/Listati:LinguaggioPython/Listati] BR Esempi di alcuni programmi scritti in Python a difficoltà crescente

  • [:LinguaggioPython/GUI:LinguaggioPython/GUI] BR Esempi di alcuni programmi scritti in Python con semplice interfaccia grafica

  • [:LinguaggioPython/Rurple:LinguaggioPython/Rurple] BR Imparare a programmare in Python nell'ambiente RURPLE

Ulteriori risorse

  • [http://www.python.it/]: Il sito di riferimento per i programmatori python italiani! Qui potete trovare le traduzioni in italiano della documentazione ufficiale nonchè le FAQ sul linguaggio.

  • [http://www.python.org/]: Il sito ufficiale del linguaggio python. Trovate la documentazione in inglese aggiornata all'ultima versione dell'interprete, in più tutte le novità e le iniziative che ruotano intorno a questo linguaggio.

  • [http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm Pensare da informatico] di Allen B. Downey, Jeffrey Elkner e Chris Meyers.

  • [http://www.python.it/doc/AGauld/index.html Imparare a programmare] di Alan Gauld: Due guide sull'uso del linguaggio Python adatte anche a chi in generale non ha esperienza nell'ambito della programmazione.


CategoryDaRevisionare CategoryProgrammazione