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()
Espressioni

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

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 aritmetici

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 assegnamento

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 “!=”

Operatori di confronto

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.

 
Precedenza degli operatori

OPERATORI LOGICI

Operatori logici

TABELLA DI VERITA’ AND LOGICO

AND

TABELLA DI VERITA’ OR LOGICO

OR

TABELLA DI VERITA’ NOT LOGICO

NOT

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.

TEST DEI VALORI DI VERITA

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.

Indexing
slicing

ALTRE OPERAZIONI SU SEQUENZE

min(s) restituisce il minimo della stringa preso in ordine alfabetico, max(s) è il duale.

Concatenazione
len

CONVERSIONI DI TIPO

Basic Data Types in Python
Basic Data Types in Python
Basic Data Types in Python

LINK AL CODICE GITHUB

GITHUB

LINK AI POST PRECEDENTI

PREVIOUS POST LINKS