Differenze tra le versioni di "Python Lezione 4 Giugno 2008"
(→Python) |
(→PRINT) |
||
Riga 21: | Riga 21: | ||
== PRINT == | == PRINT == | ||
− | : | + | Lo statement [http://docs.python.org/ref/print.html print] valuta tutte le espressioni presenti e quindi le stampa a video. |
− | + | L'espressione da valutare può essere anche un semplice numero o una semplice stringa | |
− | + | ||
− | |||
''print 3'' | ''print 3'' | ||
− | + | stampa 3, e anche se scrivo | |
− | se scrivo | ||
'' print “3”'' | '' print “3”'' | ||
− | stampa lo stesso | + | stampa lo stesso anche se abbiamo passato prima un intero, poi una stringa. |
− | se scrivo | + | Questo è normale, perchè il numero "tre" viene rappresentato dal simbolo 3 nel sistema decimale. |
+ | |||
+ | Invece, se scrivo | ||
''print 3+2'' | ''print 3+2'' | ||
− | + | otteniamo a video 5: l'inteprete ha valutato l'espressione, ha eseguito la somma e stampato il situlato. | |
− | + | Mentre se scriviamo | |
− | se | ||
''print “3+2”'' | ''print “3+2”'' | ||
− | + | il risolutato è | |
''3+2'' | ''3+2'' | ||
+ | in quanto abbiamo passato la stringa composta dal carattere 3, dal simbolo + e dal carattere 2. | ||
− | Le variabili non | + | Le variabili in python non devono essere dichiarate: esistono dalla prima volta in cui gli viene assegnato un valore |
''messaggio=”hello world”'' | ''messaggio=”hello world”'' | ||
''print messaggio'' | ''print messaggio'' | ||
se questo programma viene eseguito il risultatato sarà: | se questo programma viene eseguito il risultatato sarà: | ||
''hello world'' | ''hello world'' | ||
− | l'interprete | + | l'interprete valuta l'espressione ''messaggio'' e stampa il suo contenuto |
− | |||
== ECCEZIONE == | == ECCEZIONE == |
Versione delle 08:19, 6 giu 2008
Python
Python è un linguaggio di programmazione interpretato. Il linuaggio interpretato è simile agli altri linguaggi in circolazione ma, invece di essere trasformato direttamente in codice binario dal meccanismo automatico, viene interpretato da questo e poi mandato all'hardware. Un linguaggio interpretato non ha bisogno di essere ricompilato: il codice scritto viene interpretato da un interprete a run-time (tempo di esecuzione) e tradotto al volo nel linguaggio macchina. Quindi i programmi python possono girare su qualsiasi hardware e sistema operativo su cui è stato portato l'interprete. Ovviamente, questa cosa si paga sul tempo di esecuzione pure: l'approccio ha si i suoi vantaggi, ma rispetto a un linguaggio compilato direttamente in linguaggio macchina per creare un eseguibile, python e gli altri liguaggi interpretati risultano essere più lenti.
Esistono vari interpreti: Cpython, o classic python, è l'interprete "ufficiale", scritto in C e disponibile per linux, mac e windows. Jython è un interprete scritto al 100% in Java, e si interfaccia strettamente ai programmi e alla libreria Java, IronPython è un interprete python che gira sulla piattaforma .NET mentre PyPy è (anche) un interprete python scritto in.. python
La prima riga di ogni script python deve iniziare con #!/usr/bin/env python
il #! del file fa capire al sistema operativo (solo su sistemi posix, quindi unix/linux) che quello non è un file di testo ma un eseguibile da eseguire con l'inteprete python.
COMMENTI
- sono righe che l'interprete salta e non legge
es:
# stampa:”hello word”
Lo statement print valuta tutte le espressioni presenti e quindi le stampa a video. L'espressione da valutare può essere anche un semplice numero o una semplice stringa
print 3
stampa 3, e anche se scrivo
print “3”
stampa lo stesso anche se abbiamo passato prima un intero, poi una stringa. Questo è normale, perchè il numero "tre" viene rappresentato dal simbolo 3 nel sistema decimale.
Invece, se scrivo
print 3+2
otteniamo a video 5: l'inteprete ha valutato l'espressione, ha eseguito la somma e stampato il situlato. Mentre se scriviamo
print “3+2”
il risolutato è
3+2
in quanto abbiamo passato la stringa composta dal carattere 3, dal simbolo + e dal carattere 2.
Le variabili in python non devono essere dichiarate: esistono dalla prima volta in cui gli viene assegnato un valore
messaggio=”hello world” print messaggio
se questo programma viene eseguito il risultatato sarà: hello world l'interprete valuta l'espressione messaggio e stampa il suo contenuto
ECCEZIONE
- se io commento la definizione di messaggio (es: # messaggio = " hello world " ) il programma non sa cos'è messaggio e se scrivo:
print "messaggio"
il risultato sarà:name error, che, viene chiamato eccezione.
LE STRINGHE
supportano molti metodi perchè sono oggetti (che è un altro nome per variabile).le stringhe sono immutabili. Se una stringa viene dichiarata la seconda volta, diversamente dalla prima, quella precedente viene buttata.
messaggio=”ciao” messaggio=”ciao mondo” print “messaggio”
lui scrive
ciao mondo
In Python non si possono sommare cose diverse, o meglio, lo posso fare ma mi converte il numero in stringa.per esempio
print messaggio*2
l'esecuzione darà
messaggio messaggio
esempio:
Print “ciao”+”mondo”
lo eseguo e mi darà:
ciao mondo
Se si scrive python da riga di comando parte l'interprete se scriviamo roba lui l'esegue e si usa per provare le cose.per uscire premere ctrl+d.
LE STRINGHE SONO IMMUTABILI.
Funzione DIR
messaggio=”ciao” dir(messaggio)
a questo punto il programma da una serie di caratteri incomprensibili. Praticamente dà i metodi che suporta la stringa messaggio.
I metodi
sono operazioni che si possono applicare alla stringa.
quelli che iniziano con __spesso vengono usati per scoraggiare la gente ad usarli,in quanto qui non esistono i permessi e ognuno può modificare ciò che vuole.
Quando il metodo inizia con AD richiama l'operatore dell'addizione
__ doc__ ce l'hanno tutti gli oggetti (stringhe, interi...)
metodo IS: tutti I metodi che iniziano per is danno come risultato o vero o falso. es:
messaggio.isalpha()
mi dice se messaggio è o meno alfanumerico. isalpha è un oggetto quindi ha le proprietà doc . se io scrivo
messaggio.isalpa.__doc__
mi dice che fa.
Importante metto tra “ solo se è una stringa. Se io definisco un oggetto con un altro oggetto con una funzione non metto “. es:
messaggio=”gigio” messaggio2= messaggio.upper()
es: TYPE(3) mi dice che variabile è.se è intero o stringa. Se io scrivo DIR(3) mi da lo stesso pappie di roba di prima. I TIPI DELLA LIBREARIA STANDARD:sono le variabili, ci sono anche le LISTE
Esistono stringhe, interi, float (numeri con virgola)buleano (che ha due valori, vero o falso, True e false)e i CONTENITORI:
LE LISTE
es. lo scaffale ha I pc, I pc sono oggetti (pc1,pc2...).Se voglio uno scaffale di pc senza dare I nomi a tutti gli oggetti, definisco lo scaffale. Lo scaffale si chiama Lista .si usano le parentesi quadre con oggetti separati da virgola es. a = [ “pc1” , “schermo rotto” , 2] dir (scaffale) da la lista dei metodi, da qui si capisce che la lista è un oggetto. Se io faccio
b = dir (a)
o
a.append(“4”)
aggiunge alla lista a il 4. la lista MUTA! Se faccio print (“a”) mi da la lista degli oggetti più il 4.
TUPLE
è una lista non mutabile. La tupla è molto piu veloce rispetto alla lista. Con tuple si usano le parentesi tonde.
DIZIONARI
il dizionario si definisce con le parentesi graffe {chiave:valore, chiave:valore} a{chiave} da il valore associato alla chiave.
Dizionari liste e tuple sono dele sequenze e sono iterable e si possono scorrere.
If elif else
if condizione :
indentato roba da fare se vero.
Python supporta o tab o spazio, si decide quanti tab o spazi alla prima indentazione. Meglio lo spazio perchè in futuro I tab verranno lasciati. Di solito si usa 4 spazi. Non c'è la graffa in pyton o I begin o gli end, si chiude e si apre la riga solo se si indenta.
Esempio:
a=3 b=1
if a >b: print (“ a è maggiore di b”) elif a==b: print (“ a è uguale a b”) else: print(“b è maggiore di a”)
in questo programma definisco due valori, a e b. Chiedo al programma se aè maggiore di b di scrivere : a è maggiore di b, se a è uguale a b di scrivere che a è uguale a b e in tutte le altre condizioni (else) di scrivere che a è minore di b.
2.is, is not or, and,!=
if a is 1: print (“si”) elif a is not 1: print (“no”)
if a is 1 and b is 3: print (“si”)
if a is 1 or b is 3: print (“okkei”)
!= è il diverso.
append, insert
a.append(“4”)
aggiunge alla lista a il 4. Se faccio print (“a”) mi da la lista degli oggetti più il 4.
con insert devo inserire anche la posizione
a.insert(2,34)
mette il 34 in posizione 2
for
specifica un ciclo, fa le cose tante volte fino ad una condizione. For variabile in una sequenza di qualche tipo. Es: for elemento in a:
print elemento
es b è una tupla. Allora posso scrivere:
for elem in b print “altro elemento” “print elem”
elem o qualsiasi altro nome gli dia è ogni elemento dentro la tupla o lista o dizionario.
Se io voglio sia la chiave sia il valore in un dizionario (se metto elem mi mette solo la chiave) posso fare: for chiave in a: print “chiave: “ + chiave print “valore: “ + a[chiave]
DOPO I DUE PUNTI METTO SEMPRE IL TAB.
xrange
xrange è un iterable di dieci elementi con il primo valore uguale a 0 .E' una lista ma non ha le proprietà di una lista. se io voglio fare un for da uno a dieci (cioè la somma da uno a 10)
es: for I xrange(10)
print I
lui stampa 1 2 3 4 5 6 7 8 9 10
range
è una lista.se io scrivo:
print range(10)
lui mi da [0,1,2,3,4,5,6,7,8,9]. è più lento di xrange e poi sta morendo
len
len (a)
da la lunghezza della stringa
enumerate
se io ho una lista di tre elmenti a=[“ciao”,”bel”, “mondo”]
for I, elem in enumerate(a):
print str(I) + “:” + elem
da la posizione corrente di ogni elemento. 0:ciao 1:bel 2:mondo
raw_input
dai il valore. Base= raw_input (“inserisce la base:”) esponente=raw_input (“inserisci l'/ esponente”)
ti chiede il valore di base ed esponente.
Int
forza il fatto che quel valore sia un intero. Es:base=int(base)
result=int(result)
UPPER,LOWER,CAPITALIZE
capitalize è un comando che sulla la stringa su cui viene applicato ,prende la prima lettera dopo gli spazi e ci mette la maiuscola
es:
print “ciao mondo”.capitalize() Ciao mondo
es:
print “ciao mondo”.title() Ciao Mondo
LOWER: prende la striga e emette tutto minuscolo UPPER: il contrario di lower
ESEMPIO DELLA SERATA:
Calcolo di una potenza.
base= raw_input (“inserisce la base:”) esponente=raw_input (“inserisci l\' esponente”)
base=int(base) result=int(result)
result=1 for i in xrange(esponente): result = result * base print result
il built-in int() è necessario, dato che tutto quello che proviene dalla tastiera viene acquisito da raw_input() come stringa. Dato che dobbiamo usarli come interi, occorre effettuare un cast, ovvero una trasformazione di tipo, da stringa a intero. E' interessante notare che int() non cerca di fare i miracoli: provate a vedere cosa succede se cercate di convertire "awlerorj" in int!