13733
Commento: formattazione del documento, alcune correzioni
|
4606
creata la sezione Esempi, localizzato lo script :)
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
## page was renamed from Linguaggio Python | |
Linea 4: | Linea 5: |
Linea 14: | Linea 14: |
Linea 45: | Linea 44: |
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 55: | Linea 88: |
print "Hello World!" | print "Ciao mondo!" |
Linea 59: | Linea 92: |
chmod a+x hello.py | chmod a+x ciao.py |
Linea 63: | Linea 96: |
python hello.py | python ciao.py |
Linea 66: | Linea 99: |
Se non è sbagliato qualcosa, si dovrebbero vedere le parole "Hello World!" stampate a video. | Se non si è sbagliato qualcosa, si dovrebbero leggere le parole "Ciao mondo!" stampate a video. |
Linea 70: | Linea 103: |
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 72: | Linea 105: |
[[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 programa 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 " ora calcolo l'area di questo triangolo" 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 98: | Linea 108: |
print " l'area del triangolo e' =" ,s }}} ''Listato del programma Area``Triangolo.py'' [[BR]][[BR]] 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 slaviamo nel file `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 trasformata in un numero a virgola mobile e inserita in un array if errato =='F'and i <3: # questo controllo ci serve per riprendere l'inserimento dei dati dopo aver completato il controlo # sul dato precedente continue # continua il ciclo while per passare al successivo input elif errato =='F' and i >=3: print ' primo lato = ',l[0] print ' secondo lato = ',l[1] print ' terzo lato = ',l[2] 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 lati non appartengono ad un triangolo. Riprova " i =0 l=[] continue # continua nel ciclo while per ricominciare i nuovi input s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2])) print " l'area del triangolo e' =" ,s 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 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 else: if i <= len(a): print "errore nell'immettere il nome .riprova" errore = 'T' break if errore == "T": continue else: # lo rendiamo tutto maiuscolo indipendentemente se lo sia o meno nomi.append(string.upper(a)) print nomi x +=1 #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 ' Eta di' +nomi[1] +" "+ str( int(eta[1])) print ' Eta di' +nomi[2] +" "+ str( int(eta[2])) 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 termianto 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 ' secondo lato = ',l[1] print ' terzo lato = ',l[2] 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 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 lati non appartengono ad un triangolo. Riprova " i =0 l=[] continue # continua nel ciclo while perche dati in input del triangolo 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) 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) stot = stot +s p=0 print "l'area totale dell'appezamento di terreno e di mq " + str(stot) 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' Fine programma ' }}} ''Listato del programma Area``Triangolo3.py'' [[BR]][[BR]] Questo programma cosi come è 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? |
* [:LinguaggioPython/GUI:LinguaggioPython/GUI] [[BR]] Esempi di alcuni programmi scritti in Python con semplice interfaccia grafica |
Linea 400: | Linea 118: |
IndiceBRTableOfContents |
Introduzione
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.
Installazione
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:
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 a 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:
Salviamo il file come hello.py e impostiamone i permessi di esecuzione:
chmod a+x ciao.py
Ora eseguiamo lo script:
python ciao.py
Se non si è sbagliato qualcosa, si dovrebbero leggere le parole "Ciao mondo!" stampate a video.
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
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.