Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Guida Python PDF
Guida Python PDF
>=2.5
a cura di
Markon
Ungraziedicuorealla
comunitdiPythonit.org.
GuidaPython
Indice
1 Prefazione..........................................................................................................................................2
1.1 Python FAQ...............................................................................................................................2
1.2 Perch Python?..........................................................................................................................2
1.3 Come cominciare?.....................................................................................................................2
1.4 IDE o ambiente di sviluppo per Python?...................................................................................3
1.5 Prerequisiti per imparare Python...............................................................................................3
2 Introduzione a Python......................................................................................................................4
2.1 Cos un linguaggio di programmazione?.................................................................................4
2.2 Cos' Python?.............................................................................................................................4
2.3 Cosa vuol dire interpretato?...................................................................................................5
2.4 Una breve introduzione..............................................................................................................6
3 Variabili e controlli...........................................................................................................................8
3.1 Iniziare con Python....................................................................................................................8
3.2 Cos' una variabile?...................................................................................................................9
3.3 Definire le variabili....................................................................................................................9
3.4 Ogni variabile ha il suo indirizzo............................................................................................10
3.5 Tipi di dati...............................................................................................................................10
3.6 Effettuare controlli...................................................................................................................11
4 Cicli e Iterazione..............................................................................................................................13
4.1 While........................................................................................................................................13
4.2 For............................................................................................................................................14
5 Crediti, Ringraziamenti, Licenza.....................................................................................................17
5.1 Crediti......................................................................................................................................17
5.2 Ringraziamenti.........................................................................................................................17
5.3 Licenza.....................................................................................................................................17
Prefazione
1StEdition
1 Prefazione
InquestepaginetratterdellinguaggiodiprogrammazionePython.
Ogni capitolo tratter un argomento e in pi saranno mostrati alcuni esempi di codice con
commenti.
Inoltresarannodisponibilideglieserciziperognisezione,coschepossiatemettereallaprova
cicheaveteappreso.
Prefazione
GuidaPython
Potete notare in queste due immagini la differenza tra un semplice editor di testo e un IDE:
Introduzione a Python
1StEdition
2 Introduzione a Python
Dopo aver dato unocchiata alle domande pi frequenti, vediamo ora pi da vicino cos Python
e come possibile utilizzarlo.
Introduzione a Python
GuidaPython
pu risultare pi lento del codice compilato, perch viene interpretata ogni singola
istruzione;
Immaginecherappresentailcodiceinterpretato:
Immaginecherappresentailcodicecompilato:
5
Introduzione a Python
1StEdition
Peroraquestesonolecosepiimportantidasapere.
Apriteuninterpreteeprovatelo!
Introduzione a Python
GuidaPython
cheviserveperstampareunasempliceparola(piprecisamentesichiamastringa)scritto
l.
Questocapitoloterminaqui.ErasolounabreveintroduzioneaPython!
Variabili e controlli
1StEdition
3 Variabili e controlli
In questo capitolocominciamo avederecomefunziona Python.Affronteremoilconcetto di
keyword (parola chiave), variabile, di come si definisce una variabile e a cosa serve
sostanzialmente.
Cosa stiamocercandodifare?Stiamocercandodidareilvalore20aunaparolachiave.
Comenellanostralinguanonpossibilecambiareilsignificatodellecongiunzioni,cosnella
programmazionenonpossibilecambiareilsignificato(sichiamavalore)alleparolechiave.
Cosilnostroprofessore(chealtrinonchelinterprete)cisegnalasubitolerrore.(meglio
8
Variabili e controlli
GuidaPython
no?)Lacosaancorapiinteressantechecidicechiaramentecheerroreabbiamofatto:in
questocasounSyntaxError!!
Nellimmaginepossiamovederechelavariabiledefinitaconilvalore5sitrovanellindirizzo
1000500dellamemoria(ovviamentesuuncomputerdiversositrovainunindirizzodiverso).
Pythonsemplificalecosegestendodasologliindirizzidellamemoriaenonpermettendo
allutente diassegnare determinati valori ad unindirizzo della memoria (cosache spesso
risultadidifficilecomprensioneecheportaaderrori).
Ora provate voi a cambiare i valori alle stesse variabili gi definite o a definire nuove
variabili.
Vichiederetedadovuscitotype.Ebbene,typeunadiquellefunzionicherappresentano
9
Variabili e controlli
1StEdition
partedellebatteriedicuiabbiamoparlatonellalezioneprecedente.Essanonfaaltroche
ritornareiltipodellavariabile(comevedetevariadaintastr,doveintstaperintero,
strstaperstringa,ecosvia).
Seaveteprovatoadefiniredellevariabiliprobabilmenteavretericevutoqualcheerrore,come
SyntaxError.QuestoperchPythonhadelleregole(comeabbiamovisto)ancheperinomi
dellevariabili:ilnomedevecominciareconunalettera(oconununderscore,ilsegno_)e
puconteneresololettereenumeri(adesempiovar1=10).
Percuiseaveteprovatoautilizzarecarattericome&,%,,esimili,avretericevutounerrore
disintassi.
Come potete notare, i due valori, meglio definiti come indirizzi nella memoria,
sono diversi e ci significa che la variabile stata distrutta e ricreata:
naturalmente i valori possono cambiare da computer a computer, a seconda della
memoria concessa dal sistema operativo.
10
Inumeri:comenellinguaggiocomune,ancheinPythonesistonoinumeri.
Lestringhesonoperdefinizioneunasequenzadicaratteri,immutabili;
Unalistauninsiememutabilechepucontenereelementididiversotipo(possiamo
mettereinsiemestringhe,interi,istanzediclasse,ecosvia);
Variabili e controlli
GuidaPython
Gliinsiemisonountipodidatononordinatocontenenteoggettinonduplicatialsuo
interno;
Le tuple sonosequenzedioggettichepossonoessereeterogenei(comeperleliste),
masonoimmutabili;
I booleani sonountipodidatocomuneneilinguaggidiprogrammazione:essisono
TrueeFalse;
Questitipididatiliuseremointuttoiltutorial.Seviinteressavederequalcheesempiodi
comesiusano,bastachefacciateclicsuilinkadisposizione.
E' interessante ricordare che la gestione della memoria viene lasciata a Python, cos il
programmatorenondevepipreoccuparsidicreareunnuovotipodidatopernumerienormi,
perchaquestocipensagil'interprete.
Infatti,comemoltiprogrammatoriCsanno,uninterogeneralmentecontenutoin4byte(32
bit)eriescearappresentaremassimo4'294'967'295.IlprogrammatorePythondunquenon
devepreoccuparsideilimitideisuoinumeri.
Seabbiamobisognodieffettuaremaggioricontrolli,cisonoelif(lunionedelleparoleelse
if:altrimentise)eelse(altrimenti).
>>> if a < 20:
...
print(%d e` minore di 20 %a)
... elif a > 20:
...
print(%d e` maggiore di 20 %a)
... else:
...
print(%d e` uguale a 20 %a)
10 e` minore di 20
Vi starete chiedendo cos' il simbolo '%'. Vedremo in seguito di cosa si tratta, per
ora sappiate che serve a formattare le stringhe.
11
Variabili e controlli
1StEdition
Comevedete,allafinediognicontrollovannomessiiduepunti(:);comevedremosono
necessariancheperglialtricicli,perladefinizionedifunzioni,classi,etc
Unacosaimportantecheavretenotato(seconoscetegialtrilinguaggidiprogrammazione)
chePythonadifferenzadimoltialtrilinguaggidiprogrammazionenonterminaleproprie
istruzioni (cichedeve fareilprogramma, ovveroognirigadicodice[aparteicicli di
controllo])conilpuntoevirgola(;).
Epossibileutilizzarlomainutile
a = 10 ; # l'interprete non riporter alcun errore
OradunqueabbastanzachiaroperchPythonabbiasollevatoilfamosoSyntaxError acui
abbiamoaccennatoalliniziodellapagina.Maperchinonlavesseancoraintuito:
dopolif(oaltreistruzioni,comeelif,..)vamessaunespressionedicontrollo.
12
Cicli e Iterazione
GuidaPython
4 Cicli e Iterazione
Dopoavervistocosasonolevariabiliealcunedelleparolechiavepercapirecomeeffettuareun
controllo,inquestocapitolovedremocomeprodurreunciclo.
SecondoilteoremadiBohmJacopini:
Il teorema di Bhm-Jacopini, enunciato nel 1966 dagli informatici Corrado
Bhm e Giuseppe Jacopini, afferma che qualunque algoritmo pu essere
implementato utilizzando tre sole strutture, la sequenza, la selezione ed il ciclo,
da applicare ricorsivamente alla composizione di istruzioni elementari (ad es. di
istruzioni eseguibili con il modello di base della macchina di Turing)
Finoraabbiamovisto,seppuremoltogenericamente,laprimaelasecondaparte.Oracitocca
affrontarelaterzaparteilciclo.
Mentre della sequenza fanno parte le istruzioni singole in sequenza appunto e della
selezionefannoparteleistruzionichedeterminanolascelta,nonchicontrollisuvariabiliecos
via,delciclofannoparteleistruzionichepermettonodiripetereilcodice,perchillavorodel
programmatoreinprimisquellodinonripetereduevolteunamedesimacosa.
ComepossibiledunqueeffettuareunciclooiterazioneinPython?
Ebbene,inmanieramoltosimileadaltrilinguaggidiprogrammazione,possibileeffettuaredei
cicli con delle parole chiave noi le abbiamo paragonate alle congiunzioni che ci
permetteranno di ripetere delle istruzioni per tutto il tempo che si verifica una determinata
condizione.
4.1 While
while dascriveresempreinminuscolo,cometuttelealtreparolechiaveunakeyword
(parola chiave) che pu essere tradotta come finch. Che frase potrebbe produrre una
congiunzionesimile?
Unesempiopotrebbeessere:
Finchnonsmetterdipiovere,noirimarremoacasa.
Proviamoaimmaginareunacosadelgenereinunnostroprogramma.Pertuttoiltempoche
siverificaunacondizionedanoistabilitailprogrammadevesvolgeredelleistruzioni.
Lasintassi,ovveroilmodoconcuidobbiamogenerareilciclosimileaquellautilizzatain
precedenzapericontrolli:
while (condizione):
codice da ripetere ...
Cicli e Iterazione
1StEdition
InteoriaquindisipotrebberappresentarePythonicamentelafrasesopradescrittainquesto
modo:
while (pioggia > 0):
rimani_a_casa = True
pioggia = pioggia 1 # dovr pur smettere di piovere no?! :)
Nonhamoltovaloreuncodicedelgenere,perpuessererappresentatopropriocos.
Oravediamodavicinocomefunzionaunciclowhile.
x = 0
while (x < 5):
x += 1
Comepotetenotareecomesipuintuire,nonfacciamoaltrocheinizializzareunavariabilea
0.Acosaciservequindiilciclowhile?
Inquestocasoserveperverificarechelaxsiaminoredi5.Funzionaunpodacontatore.
Infatti, finchla x minoredi5,alloraaggiungiamo1adessa,finchnonsiverificala
condizioneperlaqualexarrivaa5.Intalmodolacondizionetraparentesirisultafalsaeil
ciclosiferma.
Ilciclowhilequindinonfaaltrocheverificareinnanzituttochelacondizionesiavera.Selo
,alloraprocedeconleistruzionidiseguito,altrimentisifermaononprosegueproprio.
Potrestechiederviora:Checosasuccedeselacondizionenonrisultamaifalsa?
Ebbene,ilciclocontinuaallinfinito.
Spesso questo pu essere causato da un errore di logica, che pu portare ad errori nel
programmaoadunachiusurainattesadelprogramma.Quandoaccadequestoingeneresi
dicechevainloop.
Tuttavia,cisonodeicasiincuiutilegenerareuncicloinfinito,cheovviamentedeveessere
controllatodalprogrammatore,coschenonsiageneratoalcuntipodierroreinatteso.
4.2 For
InPythonesisteancheunaltrocicloperiterare,cheprevedelusodiunaltraparolachiave:
ilciclofor.
Comefunzionaquestociclofor?
Lasintassidelforlaseguente:
for elem1, ... in obj1, ...:
...istruzioni...
Ebbene,questociclo,adifferenzadelprecedente,iterasuunaopisequenzedioggetti,ad
esempionumeri.
Immaginiamoinfattidivolerstamparetuttiinumerida0a100.Comepotremmofare?
14
Cicli e Iterazione
GuidaPython
Ousiamounciclowhileconunavariabilecontatore(inizializzataa0magari),cheadogni
cicloaumenta+1 allavariabile contatore elastampa,outilizziamounafunzionecheci
viene data dal linguaggio stesso. Ricordate quelle batterie incluse? Ecco, la funzione
rangeunaltradiqueste.
Voletesaperecosafalafunzionerange?BastacheavviatelinterpretePythonechelanciateil
comandohelp(range)perottenerequesto:
range()
range([start,] stop[, step]) -> list of integers
Return a list containing an arithmetic progression of integers.
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns [0, 1, 2, 3]. The end point is omitted!
These are exactly the valid indices for a list of 4 elements.
Perusciredallamodalitdihelp,bastachedigitiatelaletteraq.
Lafunzioneprendealmenounargomento(quelliopzionalisitrovanofraparentesiquadre)
perunmassimodi3argomenti.Comeintuibile,largomentoobbligatorioquelloalcentro,
stop.Ritornaunalistadiinteri,comepotetenotaredallafreccetta()
Cos una funzione e cosa sono gli argomenti e parametri lo scoprirete presto. Per ora
sappiatechequandorichiamateunafunzionecheprendeunargomento,doveteinserireun
elementotraleparentesi.Questoelementonaturalmentenonpuesserediqualsiasitipo,
madiuntipobendefinito.Perorapernonmidilungotropponellaspiegazionedeitipie
degliargomenti.Peroraimportantetenereinmentecheunafunzionechechiedealmenoun
argomento,habisognodiricevereunelementotraparentesi.
Comepossiamoquindistampareiprimi100numeri,partendoda0,conunciclofor?
Larispostalaseguente:
for x in range(100):
print(x)
Loutputsarilseguente:
0
1
2
.. # numeri omessi
98
99
Dovrebbeessereabbastanzachiaroaquestopuntoacosaservanoicicliinunlinguaggiodi
programmazione.Masenonloancora,allorasappiatecheservonoperfarschepossiate
scrivereunprogrammachefacciaqualcosapervoisenzacheutilizziatetanterighedicodice.
Infattiseavessimovolutostamparetuttiinumerida0a100senzausareilciclofor(oanche
15
Cicli e Iterazione
1StEdition
senzailciclowhile)avremmodovutoscrivere100volteprint(..)dovealpostodeipuntini
cerailnumerochevolevamostampare.
Sperodunquechesiachiarofinoraacosaservonolevariabili,lecondizionieicicli.
Esercizi:
16
Stamparetuttiinumeriparipresentida0a100(quindi0,2,4,,98)
GuidaPython
5.1 Crediti
Autoredeltutorial:MarcoBuccini<akaMarkon:buccini.marco@pythonmark.com>
5.2 Ringraziamenti
VorreiringraziarelostaffdiPythonit.orgetuttiglisviluppatoridiPython.org
5.3 Licenza
garantitoilpermessodicopiare,distribuiree/omodificarequestodocumentoseguendoi
termini dellaGNUFreeDocumentationLicense,Versione1.1oogniversionesuccessiva
pubblicata dalla Free Software Foundation; senza Sezioni non Modificabili, nessun Testo
Copertina, nessun Testo di Retrocopertina. Una copia della licenza pu essere ottenuta
pressoFreeSoftwareFoundation,Inc.59TemplePlace,Suite330,Boston,MA021111307
USA.
Copyright2009MarcoBuccini.
17