Sei sulla pagina 1di 12

FUNZIONI PREDEFINTE:

print(valore1,valore2,) : stampa sullo schermo tutti i valori inseriti tra parentesi,che possono essere di
qualsiasi tipologia (stringhe,liste,interi,etc.) ,limportante che ogni elemento sia separato dal
successivo da una virgola. Inoltre la print ha dei valori di default,cio: alla fine di ogni stampa va a capo
e separa ogni valore da uno spazio bianco. Per modificare queste due impostazioni occorre specificare
tra parentesi i valori desiderati:
print(valore1,valore2,end= ) permette di finire la stampa e poi di non andare a capo
print(valore1,valore2,sep=) permetti di stampare i due valori separati dai tre puntini
input(descrizione facoltativa dellinput: ): una funzione predefinita che inserita in un programma
crea un collegamento con lutente, il quale deve inserire tramite tastiera un certo dato. Infatti la scritta
tra parentesi semplicemente facoltativa e serve per far capire allutente che tipo di valore deve
inserire. Ricordiamo inoltre che qualsiasi input da tastiera viene valutato come una stringa, perci se il
dato richiesto un numero occorre convertirlo in un intero dopo linserimento. La sintassi per farlo :
numero=int(input(inserisci un numero: ))
chr(intero): una funzione che prende in ingresso un intero e restituisce il carattere Unicode
corrispondente:
ord(carattere): la funzione inversa di chr, prende in ingresso un carattere e restituisce il numero con
cui memorizzato nel codice Unicode.
max(lista,tupla,stringa): una funzione che lavora su moltissime classi restituisce il massimo valore
in un elenco di oggetti (per questo spesso usato su stringhe e tuple). Funziona anche su stringhe, ma
non utilizzata in quel campo, perch usa i codici unicode dei singoli caratteri della stringa.
min(lista,tupla,stringa): lavora esattamente come max() ,restituendo per il valore minimo dellelenco.
len(stringa,lista,tupla,dizionari,etc.): una funzione che lavora su praticamente ogni oggetto e
restituisce la lunghezza di questultimo. In particolare: il numero di caratteri di una stringa, il numero di
elementi in una lista o una tupla, il numero di chiavi in un dizionario.
range(intero): una funzione che prende in ingresso un numero intero e offre una specie di lista con in
numeri da zero a quel dato intero escluso. una funzione ottima per scandire
stringhe,liste,dizionari,etc. tramite cicli. Questo perch in informatica si conta partendo da 0. La
funzione range per essere utilizzata su stringhe,etc. spesso scritta cosi: range(len(oggetto)). Inoltre
questa funzione di default inizia da zero e va di passo 1, ma queste impostazioni si possono cambiare
specificando questi valori. La sua sintassi completa : range(start,stop,step) . Con cui si specifica da
quale intero partire, a quale arrivare e con che passo contare.
list(stringa,range,dizionari,etc.) : una funzione che crea una lista di qualsiasi oggetto iterabile. La sua
funzione assimilabile a un codice che scandisce un determinato oggetto con un for e poi inserisce
elemento per elemento nella lista. Perci su una stringa crea una lista che ha come elementi i singoli
caratteri, su un range crea una lista di tutti i numeri del range, su un dizionario crea una lista delle
chiavi e cos via.
int(numerale): una funzione predefinita che si aspetta in ingresso una stringa numerica (numerale
appunto) e restituisce lintero corrispondente.
str(intero,liste,dizionari,etc.) : una funzione che trasforma qualsiasi oggetto in una stringa, pu essere
utile per trasformare gli interi in numerali. Per esempio 2 diventa 2 , [casa,3,sei] diventa
[casa,3,sei].
sorted(liste,stringhe,dizionari,etc.) : una funzione che prende in ingresso qualsiasi oggetto ordinabile
e ritorna una lista dei costituenti di tale oggetto ordinati alfabeticamente o numericamente (es.: su una

lista restituisce semplicemente la lista ordinata, su una stringa restituisce una lista i cui elementi sono i
caratteri ordinati, su un dizionario restituisce una lista delle chiavi del dizionario ordinate).

ALGEBRA BOOLEANA:
Lalgebra booleana, o relazionale, si fonda su due valori fondamentali True e False, ed ha a
sua disposizione solo tre operatori: and , or e not. In pratica i risultati di qualsiasi operazioni
booleana saranno vero o falso. Questo tipo di algebra servir molto in costrutti come il
while o lif ed necessaria per imporre al programma di compiere istruzioni diverse a secondo
di quale situazione sia verificata (espressione booleana vera) e quale non lo sia (espressione
booleana falsa). Lalgebra booleana sfrutta tutti quegli operatori che prevedono un confronto
o una valutazione,sono espressioni booleane quelle che usano:
- a < b , a >b , a <=b, a>=b : se la disuguaglianza verificata il risultato True,
altrimenti False.
- a==b (uguaglianza) : si usa il doppio uguale perch il singolo si usa per le
assegnazioni.
-

a!=b ( ) : se a veramente diverso da b sar True, altrimenti False.

A volte necessario compiere pi valutazioni insieme perci si usa:


- and: serve a valutare pi espressioni booleane insieme, il costrutto :
bool1 and bool2 and and booln
se tutte le espressioni booleane sono vere restituisce True ,se anche una sola falsa
restituisce False.
- or: simile alland e valuta pi espressioni booleane, ma in questo caso basta che una
sola espressione sia vera affinch il risultato sia True, solo se sono tutte false sar False.
- not: serve semplicemente a invertire il valore di unespressione booleana. Infatti, not
bool1 risulta vera se bool1 falsa e falsa se bool1 vera.
Nelle applicazioni pu capitare di combinare questi tre operatori, allora necessario capire
quale priorit d Python nelle operazioni booleane,essa la seguente:
1) not 2) and 3) or
Comunque, in casi di incertezza, consigliabile usare le parentesi per forzare una certe
precedenza che noi abbiamo in mente:
if (a>b or a>c) and (b!=0 or not a ==1 ) .

STRINGHE
Le stringhe non sono altro che delle sequenze di caratteri alfanumerici che in Python sono
racchiuse tra doppie virgolette. Sono esempi di stringe:
s1=casa ; s2=casa23 ;s3=234.casa;etc.
In Python le operazioni sulle stringhe sono moltissime,innanzitutto su esse valgono alcune
operazioni matematiche come il pi e il per, vediamo in che modo:
- concatenazione (+) : se si scrive casa+casetta il risultato non sar altro che la
giustapposizione delle due stringhe, cio casacasetta.
- iterazione (*) : se si moltiplica una stringa per un intero n ,il risultato sar una stringa
composta da n volte la stringa di partenza. Infatti: casa * 3 = casacasacasa.
Le stringhe, come tanti altri oggetti, possono essere scandite. Nel caso delle stringhe i suoi
elementi costituenti sono i caratteri, perci visitando con lindice le stringhe si pu
accedere ai singoli caratteri. Ricordiamo inoltre che i caratteri si contano con una
numerazione che va da 0 a len(s)-1:
s=casale s[0]=c , s[1]=a, , s[len(s)-1]=e .
Per accedere agli ultimi caratteri di una stringa pu essere utile sapere che si pu visitare la
stringa dallultimo carattere con una numerazione negativa,da -1 a len(s):
s=casale s[-1]=e , s[-2]=l ,, s[-len(s)]=c .
Questa modalit di accesso diretto ai singoli caratteri viene poi implementata con la
possibilit di estrarre delle sottostringhe da una stringa di partenza. Per fare ci si usa
la sintassi:
- s2=s1[a:b] , in questo modo la stringa s2 composta dai caratteri della stringa s1 dalla
posizione a alla posizione b ESCLUSA!
- s2=s1[:b] , in questo modo la stringa s2 composta dal primo carattere di s1 fino al besimo escluso.
- s2=s1[a:] , in questo modo la stringa s2 composta dall a-esimo carattere di s1 fino
allultimo.
Oltre le funzioni predefinite che abbiamo descritto allinizio,ogni classe di oggetti (stringhe,
liste, file ,etc.) ha delle funzioni caratteristiche che vengono dette metodi . Esse non sono
chiamate nello stesso modo delle funzioni predefinite ,cio nomefunzione(ingresso) , ma
funzionano nel seguente modo: si scrive loggetto (o la variabile a cui assegnato) seguito da
un punto , quindi si scrive il metodo e poi lingresso tra parentesi (es.: s.replace(a,b) oppure
l.sort() ) . Vediamo i principali metodi della classe stringhe:
-

s.find(sottostringa)
una funzione che prende in ingresso una
sottostringa della stringa
con cui stata chiamata e
restituisce lindice del primo carattere della sottostringa allinterno della stringa
generale. Questo metodo restituisce il valore -1 se la sottostringa non presente nella
stringa generale (es.: formica.find(mic) restituisce 3, perch il primo carattere della
sottostringa (m) si trova in posizione 3 allinterno della stringa generale).

s.rfind(sottostringa)
una funziona che lavora in maniera identica a find,
ma al contrario di questultima inizia a cercare da destra la sottostringa. Perci
restituir lindice dellultima occorrenza di una certa sottostringa o carattere.

s.count(sottostringa)
una funzione che prende in ingresso una
sottostringa e restituisce il numero delle occorrenze di quella sottostringa allinterno
della stringa generale (es.: casale.count(a) restituisce 2, perch il carattere a
due volte in casale).

s.replace(old_str, new_str)
una funzione che serve a sostituire in una
stringa una certa sottostringa con una nuova (es.: casale.replace(a,o) restituisce
cosole) . La funzione replace pu essere usata in maniera pi completa sfruttando la
possibilit di decidere se sostituire tutte le occorenze della vecchia sottostringa o
soltanto le prime n. La sintassi diventer s.replace(old_str,new_str,n) ,con lesempio
di prima: casale.replace(a,o,1) sar cosale e non cosole come prima.

s.split()
una funzione che agisce su una stringa e crea una lista in cui gli
elementi sono dati da tutte le parole della stringa s. Perch vengono considerati
elementi quelle sottostringhe racchiuse tra spazi bianchi. Se si vuole creare una lista in
cui gli elementi sono le sottostringhe separate dalle virgole basta specificare tra
parentesi : s.split(,) .

s.strip()
una funzione che prende una stringa ed elimina tutti gli spazi bianchi (e
i new line, \n) allinizio e alla fine della stringa (es::
casa
.strip() restituisce
casa).

s.isdecimal() una funzione che restituisce True se la stringa formata da tutti


numeri decimali,False altrimenti.

s.isalpha()
una funzione che restituisce True se la stringa formata da tutti
caratteri alfabetici, False altrimenti.

s.isupper()
una funzione che restituisce True se la stringa formata da tutti
caratteri alfabetici maiuscoli, False altrimenti.

s.upper()
una funzione che prende in ingresso una stringa e restituisce la
medesima convertendo tutti i caratteri minuscoli in maiuscolo.

s.islower()
una funzione che restituisce True se la stringa formata da tutti
caratteri alfabetici minuscoli, False altrimenti.

s.lower()
una funzione che prende in ingresso una stringa e restituisce la
medesima convertendo tutte le lettere maiuscole in minuscolo.

s.endswith(sottostringa)
una funzione che prende in ingresso una sotto
stringa e restituisce True se la stringa generale termina con quella sottostringa, False
altrimenti.

LISTE
Le liste sono unaltra classe fondamentale in Python, esse sono assimilabili alle stringhe ma
hanno della caratteristiche uniche. Innanzitutto le liste seguono la seguente sintassi:
lista=[elem1,elem2,,elemn]
Non sono altro che elenchi di elementi separati da virgole e racchiusi in parentesi quadre. Le
liste hanno per il vantaggio di poter contenere qualsiasi tipo di oggetto: liste di
stringhe,interi,reali,file,dizionari e persino altre liste. Inoltre unaltra caratteristica delle liste
il fatto di essere altamente modificabili:
l=[1,casa,3.5] l[0]=uno l=[uno,casa,3.5]
la seconda istruzione (l[0]=uno) stata unassegnazione vera e propria ed essa stata
possibile proprio perch le liste sono oggetti modificabili tramite la visita per indici. Se
avessimo fatto una cosa simile con una stringa (s=casa s[2]=r ) avremmo ottenuto solo
un errore.
Vediamo ora i principali metodi della classe liste:
-

l.insert(indice,elemento)
una funzione che inserisce lelemento specificato tra
parentesi nella lista, in posizione specificata dallindice. Se lindice out of range la
funzione inserir lelemento alla fine della lista.

l.append(elemento)

l.extend (lista)
modifica la lista l inserendo alla fine anche gli elementi
della lista tra parentesi . lo stesso risultato ottenibile usando loperatore + tra le due
liste. Mentre se si fosse usato append si sarebbe aggiunto un solo elemento alla lista l
costituito da unaltra lista, in pratica si sarebbe generata una lista di lista.

l.remove(elemento)
elemento.

l.pop()

elimina e restituisce lultimo elemento di l

l.pop(indice)
specificato

elimina e restituisce lelemento corrispondente allindice

l.sort()
modifica la lista ordinandola dalla a alla z (se alfabetica) o in
ordine numerico crescente (se numerica).

l.sort(reverse=True)
la stessa funzione precedente che lavora al contrario:
ordina dalla z alla a o in ordine numerico decrescente.

l.index(elemento)
restituisce lindice della prima occorrenza di elemento nella
lista, se elemento non c d errore.

inserisce lelemento alla fine della lista

modifica la lista eliminando da essa la prima occorrenza di

Il fatto che le liste siano altamente mutabili pu essere una caratteristica tanto utile quanto
dannosa, infatti se modifichiamo una lista tramite una funzione tale modifica subito
applicata alla lista e non necessario creare una variabile di appoggio, come
facevamo con le stringhe:
s=casa
s1=s.replace(a,o)
s casa
s1 coso

l=[3,2,1] Vediamo infatti che con le


l.sort()
liste, creando una variabile di
l [1,2,3] appoggio, si perde il lavoro e si
l1=l.sort(reverse=True)
ottiene solo il valore none.
l1 none

Questa peculiarit delle liste genera anche un altro problema: il fenomeno dell aliasing . Ci
significa che quando si compie unassegnazione del tipo l1=l2, non succede come nelle
stringhe che la stringa1 diventa uguale alla stringa2 pur restando comunque due entit
diverse. Con le liste, la sintassi l1=l2 fa s che le due variabili puntino alla medesima
lista e perci modificando l1 si modifica anche l2:
s1=casa
s2=s1
Nelle stringhe s1 e s2, pur
s2=s2.replace(a,o)
essendo state uguali,
s1 casa
rimangono due entit diverse.
s2 coso

l1=[3,2,1]
l2=l1
l1.sort()
l1 [1,2,3]
l2 [1,2,3]

Nelle liste, l1 ed l2 sono


esattamente la stessa cosa.
Infatti, modificando l1 cambia
anche l2.

Per creare una lista uguale ad un'altra, ed evitare che una si modifichi quando si lavora
sullaltra ,abbiamo due modi:
-

l2=l1[:]
In questo modo come se si estraesse una sottolista,che per coincide con
la lista stessa.

l2=l1.copy() il modo pi rigoroso, si sfrutta lapposita funzione copy() che genera


una copia di l1.

FILE
Su Python possibile anche lavorare su file di testo,cio elenchi di caratteri memorizzati sul disco.
I tipi di file di testo pi comuni sono .txt o .csv ; Word,ad esempio, non genera file di testo.
Loperatore fondamentale quando si lavora con i file la funzione open , essa genera il
collegamento tra Python e il file stesso, vediamo la sua sintassi:
f= open(nomefile ,mode=r/w/a , encoding=UTF-8 )
Inizialmente si specifica il nome del file con cui si vuole lavorare, il secondo parametro indica se si
vuole scrivere sul file (w) o se si vuole solamente leggerlo (r) , infine occorre indicare il codice con
cui leggere il file ,di norma si usa UTF-8. Questa funzione ha il valore mode=r di default, perci
bisogna specificare la modalit di uso del file solo se si vuole scrivere su di esso.
Usare un file in modalit di lettura molto semplice e non richiede particolari accorgimenti ,
questa modalit viene usata principalmente quando si vuole sfruttare i dati in un file per fare delle
valutazioni o dei controlli. La modalit di scrittura leggermente pi complessa e prevede due
ulteriori modalit al suo interno:
-

modalit WRITE (w): dichiarando questa modalit succede che ogni volta che si scrive su
un file, viene prima cancellato completamente il suo contenuto precedente. Come se si
trattasse di sovrascrivere il file. Se il file su cui si vuole scrivere non esiste, esso verr
creato e compilato salvandolo nella stessa directory in cui si salva il programma Python.

modalit APPEND (a): in questaltra modalit quando si scrive su un file le nuove


stringhe vengono aggiunte a quelle preesistenti e non avviene alcuna sovrascrittura di dati.
Allo stesso modo che con write, se il file non esiste , esso viene prima creato e poi
compilato regolarmente.

A prescindere che si voglia aggiungere o sovrascrivere dei dati, il comando che permette
effettivamente di scrivere sul file lo stesso ambo i casi:

Si pu usare sia il metodo


.write( ) (1) che la funzione
print( cosa scrivere , end=, file=nomefile
)
print(
) (2) .
Sono due possibilit
equivalenti.

1) nomefile.write( cosa scrivere )


2)

Vediamo ora i principali metodi della classe file di testo:


-

f.close() una funzione fondamentale che deve essere necessariamente usata quando si
completato il processo di scrittura su un file di testo ,altrimenti si rischia la perdita dei dati
appena immessi. Per i file in modalit di lettura non necessaria.

(s=) f.read()
una funzione che serve a leggere per intero tutto un file e lo
rende una stringa, per questo deve essere assegnata ad una variabile che memorizzi tale
stringa.

(s=) f.readline()
una funzione che legge il file una riga per volta, perci trasforma
la prima riga in stringa e la assegna alla variabile. Come riga si considerano tutti i caratteri
fino al primo newline (\n) incluso. Perci non esiste la distinzione di riga con il punto.

(l=) f.readlines()
una funzione che trasforma tutto il contenuto di un file di testo
in una lista,dove ogni elemento una riga del file.

N.B.: Ogni volta che si usa uno di questi metodi il file si consuma. Perci se facciamo un primo
readline() e poi facciamo una read(), questultima conterr tutto il file esclusa la prima riga, perch
questa stata assegnata con la readline().Quindi se si vogliono fare pi operazioni considerando il
file per intero, esso va riaperto ogni volta tra unoperazione e laltra.

DIZIONARI
I dizionari sono unulteriore classe di oggetti in Python, essi sono assimilabili alle liste , ma
presentano una differenza radicale: la lista un elenco ordinato (che dipende da indici
posizionali) , il dizionario non presenta limiti di ordine ed solo un insieme di coppie di
elementi , in cui il secondo elemento (valore) dipende direttamente dal primo (chiave). una
struttura molto utile quando si vuole trattare dei dati che non dipendono da un ordine ma da
un soggetto preciso (es.: lavorando con i voti di una classe, sarebbe scomodo inserirli in una
lista e ricordarsi che alla posizione 0 corrisponde il voto di Andrea, alla posizione 1
corrisponde il voto di Antonio e cos via. molto pi utile associare direttamente il voto alla
persona. Per questo si usano i dizionari).
La sintassi di questo insieme di coppie legate tra loro la seguente:
d = { chiave1:valore1 , chiave2:valore2 , }
Per cui, la virgola divide le coppie del dizionario , mentre i due punti sono il collegamento
chiave/valore.
Un dizionario pu essere visitato solo tramite le sue chiavi, che in un certo senso fanno la
funzione degli indici nelle liste, perci per accedere ai singoli elementi scriveremo:
d[chiave] valore corrispondente

; il contrario ovviamente non funziona:


Errore!

d[valore]

Anche il dizionario, come le liste, un oggetto modificabile in qualsiasi momento. In


particolare, se si compie una nuova assegnazione su una chiave gi esistente il valore verr
sostituito ; invece, se si compie unassegnazione con una chiave che non presente nel
dizionario, la nuova coppia viene semplicemente aggiunta:
d={mario: 5 , luca:7 , matteo: 10 }
Cambio valore:
d[mario] = 8

d={mario:8 ,luca:7 , matteo:10}


7 , matteo : 10, giulio : 6 }

Aggiunta valore:
d[giulio] = 6

d={mario: 5 , luca:

Vediamo ora i principali metodi della classe dizionari:


-

d.keys ()
Restituisce un elenco speciale delle chiavi del dizionario. Questo
elenco difficile da maneggiare in Python, perci spesso si usa abbinare questo

metodo alla funzione list() che garantisce che il risultato sia una lista, un oggetto che
sappiamo trattare:
d.keys() dict_keys( [matteo, luca , mario] )
list(d.keys()) [matteo , luca , mario ]
-

d.values()
Restituisce lo stesso elenco speciale, ma contenente i valori del
dizionario. Perci anche qui consigliabile luso combinato della funzione list() :
d.values() dict_values([ 5 , 7 , 10 ] )
list( d.values() ) [5 , 7 , 10 ]

d.items()
Restituisce un elenco speciale di tuple contenenti la chiave e il
relativo valore, sempre allo stesso modo si usa la funzione list() per ottenere una vera
lista di tuple:
d.items() dict_items([(mario,5) , (luca,7 ) , (matteo,10)])
list( d.items() ) [(mario,5) , (luca,7) , (matteo, 10) ]

d.pop (chiave)
Elimina dal dizionario la coppia con la chiave specificata in input.
Inoltre , come il pop delle liste, restituisce anche il valore della chiave che stata
eliminata.

IF & ELSE (ed ELIF) :


il costrutto if-else fondamentale in qualsiasi linguaggio di programmazione, esso permette
di far eseguire due istruzioni diverse al programma , a secondo che un qualcosa sia vero o
falso. In pratica una sorta di spartiacque che agisce diversamente in situazioni diverse.
Vediamo la sua sintassi:
if

Operatore logico
booleano

Istruzioni da eseguire se
loperatore True

Parte Then :
ci che si avvera se la
clausola if viene verificata.

else:
Istruzioni da eseguire se
loperatore False
A volte succede che i casi da distinguere ,che fanno capo ad azioni diverse, siano numerosi.
La sintassi allora equivarrebbe ad una cascata di if-else , che diventerebbe anche illeggibile.
Per ovviare a questo problema esiste un comando che unisce in s sia lif che lelse : Elif . Lo
potremmo tradurre con un altrimenti, se , esso aiuta ad offrire una serie di alternative
alloperatore booleano iniziale.

CICLO FOR:
Anche questo un costrutto fondamentale di Python e si usa per compiere un numero
noto di iterazioni, a differenza della condizionalit del while. Vediamo e commentiamo
la sua sintassi:

for
:

Variabile di ciclo
:
elem)

(i, c, k,

in
Elenco oggetti
(stringa,lista,dizionario,file, etc.)

ISTRUZIONI che verranno eseguite


con la variabile di ciclo che assume
ad ogni iterazione un valore
dellelenco oggetti.

Il ciclo for molto utile per compiere operazioni che si basano sullanalisi dei singoli elementi
di un oggetto. Infatti il for visita ogni oggetto secondo i suoi elementi costituenti pi
semplici:
-

For
For
For
For

c in stringa : fa riferimento ai caratteri della stringa.


elem in lista: fa riferimento agli elementi di una lista.
k in dizionario : fa riferimento alle chiavi del dizionario.
riga in file :
fa riferimento alle righe di un file.

A volte si vuole sfruttare il for per visitare un oggetto non direttamente tramite i suoi
costituenti, ma sfruttando i suoi indici posizionali . La sintassi allora diventa:
-

For i in range( len(stringa) ):


Solo stringhe e liste sono visitabili tramite indici
For i in range( len(lista) ):

CICLO WHILE:
un altro costrutto fondamentale nei programmi Python, esso serve ad iterare una o pi
operazioni per un numero ignoto di volte. Il ciclo dipende da una condizione booleana, finch
essa rimane verificata il ciclo va avanti , si blocca solo quando loperatore diventa falso. Una
struttura del genere pu spesso provocare errori, infatti bisogna assicurarsi che loperatore
booleano cambi nel tempo in modo tale che allinizio sia vero per avviare il ciclo ma che dopo
un certo numero di iterazioni possa diventare falso. Se loperatore non ha modo di diventare
falso , si incappa in un ciclo infinito. Vediamo la sintassi:

Espressione
while
booleana
Istruzioni da eseguire finch
lespressione rimane verificata.

:
Si potrebbe interpretare come:
finch
(=WHILE)
questa
espressione
vera ,fai questa cosa.

Esistono poi vari modi per gestire un ciclo while,ognuno dei quali garantisce un buon
funzionamento. Vediamo i principali:
-

valore sentinella : Si usa spesso quando il ciclo while diventa interattivo con lutente.
un modo per continuare a far andare un programma o un codice finch lutente non
vuole pi. La sintassi si basa su un input esterno che esprime la sua volont ad andare
avanti o a terminare. Il programmatore stabilisce qual il simbolo che lutente deve
inserire per far capire che non vuole pi andare avanti (valore sentinella) e allora
scriver nel codice while input != valore sentinella : .

lettura fuori e dentro il ciclo : si usa quando si sta analizzando un file di cui non si
conosce il numero delle righe. Perci non si sa quante iterazioni compiere , allora si
scrive: while len(riga) > 0 oppure while len(riga[0]) > 0 . Dove riga non altro che

una stringa che si estrae dal testo tramite loperatore f.readline(). In questo modo si
inizia la lettura del file fuori dal ciclo e poi si inserisce lo stesso comando allinterno del
ciclo stesso, esso continuer finch la readline() non avr consumato tutto il file e la
lunghezza dellultimo lettura sar proprio uguale a zero, la condizione booleana sar
falsata e si uscir dal ciclo.
-

Uso di variabile boolena: si usa quando si vuole continuare unoperazione finch non
si riesce a compiere una certa cosa. Ad esempio si pu usare per scandire una stringa
di cui non si conosce il numero di caratteri e si vuole stampare tutti i caratteri fino alla
prima occorrenza di un carattere particolare. Allora si dir while not trovato: dove
trovato una variabile booleana inizializzata con False ,ma che varia a seconda se il
carattere a cui si accede volta per volta quello a cui fermarsi o meno. Se non quello
si continuer a farla valere False, altrimenti si cambia il suo valore in True e il ciclo si
fermer.

OPERATORE IN :
un costrutto molto semplice di Python che pu essere assimilato ad una funzione
predefinita, il suo compito quello di stabilire se vero o meno che un elemento si trovi
allinterno di un altro. Vediamo la sintassi:
True
Elemento
1

in

Elemento
2

False

In particolare , con le classi di oggetti fondamentali abbiamo la seguente situazione:


-

carattere in stringa
elemento in lista

- chiave in dizionario
Sono i parametri formali:
- riga in file
cio i dati immessi dallutente
su cui lavora la funzione. Se la
funzione calcola larea di un
DEFINIRE UNA FUNZIONE
cerchio , allora dovr ricevere
unoperazione molto semplice che scaturisce direttamente
dalla capacit
di creare
in ingresso
la misura
del un
programma. Tutti i programmi creati finora possono diventare
delleInizialmente
funzioni, basta
inserire il
raggio.
usavamo
programma nella seguente sintassi e ricordarsi che i dati inseriti
solitamente
tramite
input ora
il comando input() e lo
vengono immessi tramite i parametri formali della funzione.
Vediamo la sintassi:
assegnavamo
ad una variabile
, ora quella variabile va
inserita nelle parentesi dopo il
nome della funzione. Quando
def Nome
(p1,p2,,pN) :
Codice della funzione.
poi lutente invocher la
Funzione
funzione, inserir il dato
lalgoritmo che si usa per
necessario tra parentesi , che
creare il comune programma.
verr implicitamente
assegnato alla variabile da noi
inserita nel codice.

Return Risultato/i della


funzione
Se creiamo una funzione che calcola sia la somma che la differenza tra due numeri, non
difficile fare un return di pi risultati. Basta inserirli dopo il comando return separati da una
virgola (es.: return somma, sottrazione ).