TIPI DI DATO IN PYTHON
TIPI NUMERICI
Iniziamo a parlare dei Tipi di Base in Python introducendo i tipi numerici che si suddividono in:
- Integer
- Floating-Point
- Boolean
È importante sapere che tutti i tipi numerici in Python sono immutabili, una volta creato un numero e quindi un oggetto questo non può cambiare. Posso ad esempio creare una variabile a che prima punta ad un oggetto che vale 3 poi ad un oggetto che vale 4. Quello che non è possibile fare è cambiare il valore dell’oggetto, il numero 3 è sempre il numero 3.
type=int
int è la classe degli interi che non può contenere un punto perché altrimenti Python lo considererebbe un floating-point. Possiamo considerare altre tre diverse basi oltre quella decimale:
- Binario 0b1100100 100
- Ottale 0o1635 925
- Esadecimale 0x1ff 511
type=bool
Il tipo Boolean ha 2 istanze True e False. È un particolare tipo di numero intero, infatti True=1 e False=0.
type=float
sono i numeri in virgola mobile ad esempio 0.0, 123.89 etc. Si può usare anche la notazione scientifica 10e4, 13e-2 etc.
LE STRINGHE
type=str
Le stringhe sono un primo esempio di una sequenza, cioè un insieme ordinato di elementi in cui ogni elemento ha una certa posizione. Una stringa è una sequenza di caratteri che deve appartenere al set Unicode. Come i numeri le stringhe sono oggetti immutabili non possiamo alterare i singoli caratteri di una stringa, però ad esempio possiamo copiare parte di una stringa. Una stringa si crea utilizzando una sequenza di caratteri chiusi tra apici, singoli o doppi. La stringa vuota a=” non ha caratteri però è perfettamente lecita. Una stringa per andare a capo deve avere il carattere backslash ad esempio:
‘Si può scrivere /
Una stringa multilinea con il backslash’
Inoltre si possono usare tre apici singoli o doppi per andare a capo.
“””si può scrivere una stringa multilinea usando o tre apici singoli o doppi”””
SEQUENZE DI ESCAPE
\n ritorno a capo
\t Tabulazione
\\ Indica di inserire il carattere backslash
\’ Inserisce un apice nella stringa non segnalando che la stringa è finita
\\” Inserisce un doppio apice nella stringa non segnalando che la stringa è finita
LA FORMATTAZIONE DELLE STRINGHE
LE F-STRING
Con f-Strings si intende la formattazione del testo in Python.
str.Format() prima forma
Noi dobbiamo preferire la versione introdotta in Python 3.6 e che si chiama f-String. In modo molto simile ad altri linguaggi di programmazione, anche in Python si possono inserire delle variabili all’interno di una stringa. Questo chiaramente ci permette di creare dei testi che possono cambiare in base a determinati eventi. Per arrivare a questo risultato ci possiamo avvalere delle f-string introdotte in Python 3.6.
Prendiamo questo esempio pratico:
mese = 'agosto'
stagione ='estiva'
x = f'siamo nel mese di {mese} e quindi nella stagione {stagione}'
print(x)
siamo nel mese di agosto e quindi nella stagione estiva
Come si può apprezzare abbiamo inizializzato una nuova stringa anteponendo la lettera “f” prima degli apici. Di fatto dichiarando una “f-string”. All’interno abbiamo richiamato le nostre variabili “classiche” inizializzate in precedenza, racchiudendole tra le parentesi graffe. In questo modo stampando la variabile “x” andiamo a compilare un testo che potrebbe essere modificando assegnando rispettivamente a mese e stagione nuovi oggetti.
E’ interessante notare che possiamo anche interagire con le variabili dentro le f-string, ad esempio in questo modo:
mese = 'agosto'
stagione ='estiva'
x = f'siamo nel mese di {mese.upper()} e quindi nella stagione {stagione}'
print(x)
siamo nel mese di AGOSTO e quindi nella stagione estiva
ESPRESSIONI ED OPERATORI
Una espressione è un tipo particolare di Statement che ha la caratteristica di venir valutata dall’interprete Python e di produrre un valore. Le espressioni più semplici sono i literal e gli identificatori.
def numeri(): a = 123456789 print(a) a=-800 print(a) a=1_000_000 #L'underscore verrà ignorato. Introdotto #in Python 3 con lo scopo di migliorare la lettura. print(bin(100)) print(a) a=0b11001111 #numero binario print(a) a=0o1635 #numero ottale print(a) a=0x1ff #numero esadecimale print(a) #Type = float a=0.0 print(a) a=100.67 print(a) a=-100.67 print(a) a=10e+3 print(a) a=10e-6 print(a) numeri()
def stringhe(): titolo="L'isola Misteriosa" autore="Giulio Verne" print(f"Titolo: {titolo.upper()}, Autore: {autore}.") #Gli operatori + e * possono essere utilizzati per la manipolazione di stringhe. #La precedenza tra gli operatori viene mantenuta. #CONCATENAZIONE a="Hello" print(a+a+a) print(a*4) #Le stringhe sono, come ogni entità in #Python , oggetti e dispongono di una #serie di funzionalità accessibili tramite dei metodi built in #split([sep, [maxsplit]]) #replace(old , new[, count]) #strip([chars]) s="Ciao Mondo" print(s.split('a',1)) print(s.replace('a','U',1)) print(s.strip('C')) #Formattazione: allineamento, maiuscole, minuscole #center(width[, fillchar]) ,ljust[,fillchar ]), rjust[, fillchar ]) #upper() ,lower()) ,swapcase() s="Questa è una STRINGA su una riga" print(s.center(50,'.')) print(s.ljust(50,'.')) print(s.lower()) #RICERCA : ricerca e interrogazione sulla stringa #find(sub[,start[,end]]) index(sub[,start[,end]]) #rindex(sub[,start[,end]]) rfind (sub[,start[,end]]) #count(sub[, start[,end]]) #isupper() islower() #startswith(prefix[,start[,end]]) ,endswith(prefix[,start[,end]]) print(s.find('riga',0,50)) print(s.index('u',0,5)) print(s.count('a',0,50)) print(s.rindex('a',0,50)) #Una stringa vuota è valutata #False mentre qualsiasi stringa #non vuota è valutata True #Le funzioni #min , max e cmp possono essere utilizzate anche sulle #stringhe. #Le stringhe sono inoltre dotate dell’operatore #in e not in s='Hello' print(min(s),max(s)) print('e' in s) stringhe()
Si possono creare espressioni più complesse rispetto ai literal usando gli operatori. Un operatore è un simbolo che viene utilizzato per rappresentare un’operazione che viene eseguita su un certo numero di elementi detti operandi. In questo esempio introduciamo l’operatore aritmetico + alla destra del simbolo di assegnazione vediamo un’operazione composta non è una semplice espressione perché viene eseguita la somma su due operandi 10 e 5 tramite un operatore che quando viene valutato insieme a questi due operandi produce il valore 15 che viene poi assegnato alla variabile x.
OPERATORI ARITMETICI
In Python 3 la divisione fra 2 interi fornisce un numero float. In Python 2 invece forniva un intero, troncando il risultato; in Python 3, per avere un risultato troncato, si usa l’operatore di divisione intera: ‘//’, sia su interi che float. Operazioni fra interi danno interi, se uno dei 2 operandi è un float viene prodotto un float; Python in questi casi fa conversioni automatiche.
OPERATORI DI ASSSEGNAZIONE
In Python ci sono diversi operatori di assegnazione; ogni operazione numerica può essere combinata con una assegnazione, per modificare una variabile e riassegnarla a se stessa.
OPERATORI DI CONFRONTO
Restituiscono : True o False. Si può controllare se una variabile è in un intervallo con la sintassi compatta del tipo: 1 < a < 3. In Python 2 c’era anche l’operatore “<>” con lo stesso significato di “!=”
PRECEDENZA TRA GLI OPERATORI
La precedenza degli operatori è nella lista seguente: da quelli con precedenza maggiore a quelli con precedenza minore:
creazione dizionari: { } creazione liste [] creazione tuple( ) , funzioni , slicing, indici riferimenti ad attributi di oggetti esponente: ** operatori "unary" : +x, -x , ~x operatori numerici: / // % * - + operatori logici: == != <> < <= > >= Operatori di appartenenza: is in operatori logici: not and or
Si possono usare le parentesi tonde per modificare le precedenze.
OPERATORI LOGICI
TABELLA DI VERITA’ AND LOGICO
TABELLA DI VERITA’ OR LOGICO
TABELLA DI VERITA’ NOT LOGICO
Nei Tipi di Base in Python Tutti gli oggetti possono essere testati come valori di verità perché indipendentemente dal tipo di oggetto c’è un qualcosa che li accomuna tutti. Infatti tutti gli oggetti hanno un valore di verità implicito come indicato nella figura seguente. Il primo gruppo ha come valore implicito False, tutti gli altri True.
TIPI DI BASE IN PYTHON LE OPERAZIONI SU SEQUENZE
Nei Basic Data Types in Python le stringhe sono un particolare tipo di sequenza, si tratta di una sequenza di caratteri presi dal set Unicode. Per prelevare un singolo carattere da una stringa si specifica un Offset all’interno di una coppia di parentesi quadre. L’offset è un indice che parte da zero e arriva alla lunghezza stringa -1. È possibile estrarre una sotto stringa a partire da una stringa. Uno Slicing si costruisce usando le parentesi quadre e inserendo o meno dei valori. Gli Slicing possono contenere caratteri che vanno da start a stop-1. Start e Stop rappresentano inizio e fine dello Slicing.
s[:] Restituisce l’intera stringa.
s[1:4] Restituisce la sottostringa specificata da start e stop escluso.
s[:4] Se non specifichiamo lo start Python inizia dall’inizio della stringa e termina con l’offset indicato.
s[9:] In questo caso Python parte da start e arriva in fondo alla stringa.
s[1:12:3] Qui vediamo l’utilizzo dello step con questa istruzione diciamo a Python di partire dalla posizione 1 arrivare a 12 saltando ogni volta tre caratteri.
s[-2:] Si possono usare indici negativi per partire dal fondo della stringa.
ALTRE OPERAZIONI SU SEQUENZE
min(s) restituisce il minimo della stringa preso in ordine alfabetico, max(s) è il duale.
Lascia un commento