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 2 e 20 (in 18 versioni)
Versione 2 del 14/09/2006 10.16.41
Dimensione: 3677
Autore: gennaro
Commento:
Versione 20 del 24/09/2006 10.56.37
Dimensione: 10658
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
== Linguaggio Python ==


=== Presentazione ===
Python
è un linguaggio di programmazione molto versatile e di altissimo livello. Utilizzato sia per lo scripting che per la realizzazione di programmi completi. E' interpretato, orientato agli oggetti ed estensibile tramite il linguaggio C. Tra i suoi difetti le prestazioni non eccezionali.


===Breve introduzione===
Python è un linguaggio di programmazione molto versatile e di alto livello. Utilizzato sia per lo scripting che per la realizzazione di programmi completi. E' interpretato, orientato agli oggetti ed estensibile tramite il linguaggio C.

== Introduzione ==
Linea 10: Linea 5:
E' interpretato e quindi caratterizzato da una grande portabilità su differenti piattaforme (Linux,Windows,Mac.....).
Proprio per la sua natura di linguaggio interpretato però le sue prestazioni non sono paragonabili a quella di altri linguaggi compilati come il C o il C++. E' sempre possibile tuttavia scrivere estensioni in C all'interprete.

Python può appoggiarsi a molte famose librerie scritte in C o C++: gui (wxpython, pygtk...), tool per lo svilippo di giochi (pygame,pysdl...), databases (mysqldb...) ...
E' un linguaggio di altissimo livello ed 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! ;-)).
E' nativamente un linguaggio orientato agli oggetti ma a differenza di altri linguaggi come il java permette anche uno stile procedurale.
E' 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 un differente linguaggio....


===Risorse===
E' interpretato e quindi caratterizzato da una grande portabilità su differenti piattaforme (Linux,Windows,Mac.....).[[BR]]
Python è estensibile tramite il linguaggio C. P inoltre appoggiarsi a molte famose librerie scritte in C o C++: gui (wxpython, pygtk...), tool per lo svilippo di giochi (pygame,pysdl...), databases (mysqldb...) ...[[BR]]
E' un linguaggio di alto livello ed 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]]
E' 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


== Risorse ==
Linea 22: Linea 16:
"""Python.it"""
http://www.python.it/
'''Python.it'''[[BR]]
http://www.python.it/ [[BR]]
Linea 28: Linea 22:
"""Pyhton.org"""
http://www.python.org/
'''Pyhton.org'''[[BR]]
http://www.python.org/ [[BR]]
Linea 33: Linea 27:
===Installazione=== == Installazione ==
Linea 37: Linea 31:
""sudo apt-get install python""


===Verifica della configurazione===

Bene ora non vi reste che lanciare l'interprete interattivo e fare pratica. Aprite una shell e digitate python [INVIO]
''sudo apt-get install python''


== Verifica della configurazione ==

Bene ora non vi reste che lanciare l'interprete interattivo e fare pratica. Aprite una shell e digitate python [INVIO][[BR]]
Linea 45: Linea 39:
""

{{{
Linea 50: Linea 46:
"" }}}

Linea 54: Linea 52:
""
>>> print "Hello World!"


{{{

>>> print  "Hello World!"
Linea 57: Linea 57:
>>> print 2+3 >>> print  2+3
Linea 59: Linea 59:
>>> print "2 + 3 = ", 2+3 >>> print  "2 + 3 = ",  2+3
Linea 61: Linea 61:
"" }}}
Linea 65: Linea 66:
"" {{{
Linea 68: Linea 69:
"" }}}
Linea 72: Linea 73:
"" {{{
Linea 74: Linea 75:
print "Hello World!"
""
print  "Hello World!"
}}}
Linea 80: Linea 81:
""cd cartella_dove_avete_salvato_lo_script"" {{{
cd cartella_dove_avete_salvato_lo_script
}}}
Linea 84: Linea 87:
""chmod a+x hello.py"" {{{
chmod a+x hello.py
}}}
Linea 88: Linea 93:
""python hello.py"" {{{
python hello.py
}}}
Linea 93: Linea 100:

Ora che vi abbiamo un po incuriosito vi proponiamo un'altro script a difficoltà crescente


# tutto cio che scrivo preceduto dal segno # viene considerato un commento
# questo è un commento

{{{
#!/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 usiamo 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 Area_triangolo.py o come piu' 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))

print " l'area del triangolo e' =" ,s
}}}
[[BR]]
Questo semplice programma abortisce se nell'inserire il dato per errore digitiamo un carattere non numerico. E' necessario quindi ricorrrere al controllo del dato immesso. A questo scopo è stato preparato questo altro programmino che Chiamiamo Area_Triangolo2.py
{{{
#!/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))
        if errato =='F'and i <3:
  
  continue # continua il ciclo while per passare al successivo input
 elif errato =='F' and i >=3:
  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 " 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 # contonua nel ciclo while per ricominciare i nuovi input
 
 
  
 

print

s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))

print " l'area del triangolo e' =" ,s
print
print "Fine programma ""
  
}}}
[[BR]]

Ora supponiamo di dover calcolare l'area di un appezzamento di terreno di svariati ettari e che
noi abbiamo scomposto in un numero finito di triangoli;
una volta nota l'area supponiamo che debba essere divisa, per volontà testamentarie, in tre parti
in funzione dell'età di tre fratelli I cui Nomi sono Angelo,Alberto,Amilcare o com volete voi.
[[BR]]
Useremo lo stesso programma Area_Triangolo 2 con qualche modifica o aggiunta e che chiameremo
Area_Triangolo3:py
{{{
#!/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
  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:
  
  continue # continua il ciclo while per passare al successivo input
 elif errato =='F' and i >=3:
  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 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)
        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 '

}}}
[[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?[[BR]]
Si Lascia al lettore questo compito facendo presente che ci sono diverse soluzioni che attendiamo
come segno tangibile della attenzione che ci avete prestato.

Python è un linguaggio di programmazione molto versatile e di alto livello. Utilizzato sia per lo scripting che per la realizzazione di programmi completi. E' interpretato, orientato agli oggetti ed estensibile tramite il linguaggio C.

Introduzione

Python è un linguaggio di programmazione ideato da Guido Von Rossum nel 1991 e derivato da un precedente linguaggio chiamato ABC. E' 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++: gui (wxpython, pygtk...), tool per lo svilippo di giochi (pygame,pysdl...), databases (mysqldb...) ...BR E' un linguaggio di alto livello ed 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 E' 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

Risorse

In lingua italiana:

Python.itBR http://www.python.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.

In lingua inglese:

Pyhton.orgBR http://www.python.org/ 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.

Installazione

Con l'installazione standard di ubuntu l'interprete python dovrebbe già essere installato sulla vostra macchina, in caso contrario è sufficiente installare il pacchetto python da Synaptic o da riga di comando:

sudo apt-get install python

Verifica della configurazione

Bene ora non vi reste che lanciare l'interprete interattivo e fare pratica. Aprite una shell e digitate python [INVIO]BR Dovrebbe apparirvi qualcosa tipo questo:

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.
>>>

Adesso proviamo qualche semplice comando:

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

Usciamo dall'interprete premendo CTRL+D oppure digitando

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

Proviamo a realizzare un piccolo script! Aprite un editor di testo qualsiasi e scrivete:

print  "Hello World!"

Salvate in in un file hello.py Adesso aprite una shell e spostatevi nella cartella dove avete salvato il file:

cd cartella_dove_avete_salvato_lo_script

date i permessi di esecuzione:

chmod a+x hello.py

e lanciate lo script:

python hello.py

Se non avete sbagliato qualcosa dovreste vedere le parole "Hello World!" stampate a video.


CategoryComunita

Ora che vi abbiamo un po incuriosito vi proponiamo un'altro script a difficoltà crescente

# tutto cio che scrivo preceduto dal segno # viene considerato un commento # questo è un commento

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 usiamo 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 Area_triangolo.py o come piu' 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))

print " l'area  del triangolo e' =" ,s

BR Questo semplice programma abortisce se nell'inserire il dato per errore digitiamo un carattere non numerico. E' necessario quindi ricorrrere al controllo del dato immesso. A questo scopo è stato preparato questo altro programmino che Chiamiamo Area_Triangolo2.py

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))              
        if errato =='F'and i <3:
                
                continue # continua il ciclo while per passare al successivo input
        elif errato =='F' and i >=3:
                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  " 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 # contonua nel ciclo while per ricominciare i nuovi input
        
        
                
        

print

s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))

print " l'area  del triangolo e' =" ,s
print
print "Fine programma ""

BR

Ora supponiamo di dover calcolare l'area di un appezzamento di terreno di svariati ettari e che noi abbiamo scomposto in un numero finito di triangoli; una volta nota l'area supponiamo che debba essere divisa, per volontà testamentarie, in tre parti in funzione dell'età di tre fratelli I cui Nomi sono Angelo,Alberto,Amilcare o com volete voi. BR Useremo lo stesso programma Area_Triangolo 2 con qualche modifica o aggiunta e che chiameremo Area_Triangolo3:py

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
                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:
                
                continue # continua il ciclo while per passare al successivo input
        elif errato =='F' and i >=3:
                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 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)
        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 '

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?BR Si Lascia al lettore questo compito facendo presente che ci sono diverse soluzioni che attendiamo come segno tangibile della attenzione che ci avete prestato.