vuoi
o PayPal
tutte le volte che vuoi
INPUT / OUTPUT
● OUTPUT: print (par1,par2) di default: - va a capo alla fine
- tra i parametri mette uno spazio
- end=’ ’ per non fare andare a capo di default
- sep=”…” mi dà una separazione diversa da quella di default tra i parametri
( posso anche fare sep=’\n’ per andare a capo )
- file=f per usare print per scrivere in un file
Il sistema operativo memorizza le scritture mandate sullo standard output in un buffer.
Esistono 3 tipi modalità di buffering:
* Senza buffer = scrittura immediata a video dei contenuti del comando print()
* Buffer di linea = scrittura a video avviene quando nel buffer viene inserita
un'interruzione di riga ('\n')
* Buffer a blocchi = il buffer si riempie fino ad una certa dimensione, poi il buffer
viene svuotato e il suo contenuto mostrato a video
Il buffering aiuta a ridurre il numero di dispendiose (in termini di tempo!) chiamate di
I/O ma a volte può avere effetti indesiderati, perciò in alcuni programmi “temporali” (es.
conto alla rovescia) è utile:
- flush=True
● INPUT: 3 modalità di input
1) varStr=input(prompt) ci serve per acquisire dei dati. Ciò che viene
digitato tramite tastiera verrà restituito sotto forma di stringa.
NB: se digito un numero la funzione input() lo converte in stringa. Quindi le
→
operazioni di somma si trasformano in operazioni di concatenazione. Per poterlo
evitare devo convertire la stringa, tramite i costruttori int() o float().
2) varStr=sys.stdin.readline().rstrip() non gestisce la stringa prompt e
pertanto occorre utilizzare un'istruzione print(). Questo metodo acquisisce
l'invio inserito dall'utente. Con [:-1] o con .rstrip() eliminiamo dalla stringa
acquisita il carattere newline
3) varStr=fileinput.FileInput().readline()[:-1] Questa funzione si comporta
allo stesso modo di sys.stdin e aggiunge un newline
TIPI DI DATO SEMPLICE
● Python non ha comandi per dichiarare una variabile. Una variabile viene creata e
tipizzata nel momento in cui gli assegniamo per la prima volta un valore. In Python
tutte le variabili sono dei semplici puntatori ad oggetto (reference). Sono gli oggetti
che risultano dotati di tipo.
● Se abbiamo una variabile contenente una collezione di valori (set, list, tupla, dict )
Python permette di estrarne i singoli valori e di assegnarli a distinte variabili mediante
un tipo di assegnamento detto unpacking
x, y = ["uno", "due"] # X "uno" Y "due"
● Le variabili create all'esterno di una funzione sono dette variabili GLOBALI. Le
variabili globali possono essere utilizzate ovunque, sia all'interno che all'esterno di una
funzione. Se creiamo, all'interno di una funzione, una variabile con lo stesso nome di
una globale allora questa variabile LOCALE (usabile solo all'interno della funzione
stessa!) oscurerà quella globale che manterrà il valore originale. Per creare /
modificare una variabile globale all'interno di una funzione, si deve utilizzare la parola
chiave global.
● Regole di naming:
• Il nome di una variabile deve iniziare con una lettera (A-z) o con _
• Il nome di una variabile non può iniziare con un numero
• Il nome di una variabile può contenere solo caratteri alfanumerici e underscore
• I nomi delle variabili sono case sensitive
• Un nome di variabile non può essere una parola chiave di Python
● Tipi di dato: Si può ottenere il tipo di dato di
una variabile con la funzione
type() print (type(i))
Mediante il casting possiamo specificare / trasformare il tipo di dato in modo esplicito
ricorrendo al corrispondente costruttore (Non è possibile convertire numeri complessi
in un altro tipo di numero)
1) TIPO BOOLEANO ( tipo bool )
= le variabili possono essere impostate a True o False. Rappresentano il risultato di
una condizione semplice (relazione di confronto) oppure di una condizione complessa
(composta da una serie di condizioni semplici connesse mediante operatori logici)
oppure di una funzione.
= bool() restituisce False quando l'argomento è
- una stringa vuota ' '
- lo zero (int)
- una collezione vuote (lista, tupla, set) altrimenti sempre True
2) TIPO NUMERICO ( tipo int, float, complex )
= INT: anche i semplici numeri interi sono oggetti, per i quali la memoria è allocata
dinamicamente. I valori interi possono avere un numero arbitrario di cifre. Possiamo
definire i valori in esadecimale mettendo il prefisso "0x", in ottale usando "0o" e in
binario utilizzando il prefisso "0b".
= FLOAT: sono i numeri espressi in virgola mobile
= COMPLEX: la parte immaginaria è identificata dal suffisso "j" o "J". La parte
immaginaria j deve avere sempre un numero iniziale ovvero devo scrivere 1+1j e non
1+j
● alcune funzioni da sapere:
● Gli operatori di identità vengono utilizzati per confrontare gli oggetti: is / is not
● Gli operatori di appartenenza vengono usati per valutare se un oggetto è contenuto
all'interno di un altro: in / not in
● Gli operatori bit a bit: (https://www.cs.unibo.it/~ghini/didattica/sistemi1/c008.pdf)
● Gli operatori di assegnamento ( += -= %= *= &= |= ^= )
● Precedenze: * parentesi esponenti molt / divisione somme
→ → →
* shift & ^ |
→ → →
* operatori di confronto, identità, appartenenza
* NOT AND OR
→ →
3) TIPO STRINGA ( tipo str )
= sono racchiuse tra virgolette singole oppure doppie. È possibile creare una stringa
distribuita su più righe utilizzando 3 virgolette """
= sono array di byte. Python non ha un tipo di dato per rappresentare il singolo
carattere: un singolo carattere è semplicemente una stringa la cui lunghezza in numero
di caratteri è pari a 1. Le parentesi quadre [ ] possono essere utilizzate per accedere al
singolo carattere della stringa s=“marco” s[0]=m
= ESCAPE: usare un carattere barra rovesciata seguito dal carattere che si desidera
inserire in una stringa, ad esempio \' per includere una virgoletta o \" per includere
delle virgolette doppie in una stringa
= OPERATORI
PER
STRINGHE
SLICING →
= FUNZIONI PER STRINGHE
- len () restituisce la lunghezza di una stringa
- upper () restituisce la stringa in maiuscolo
- lower () restituisce la stringa in minuscolo
- strip () rimuove gli spazi all'inizio e alla fine della stringa (non quelli intermedi!)
- replace (p,q) sostituisce nella stringa originale carattere p con q
- split (sep) genera una lista di sottostringhe che nella stringa originale sono
separate dalla stringa sep
- count (t, da, a) restituisce il numero di volte in cui la stringa t appare nella
sottostringa che inizia dal carattere da fino a quello di posizione a (esclusa) della
stringa originale s
- find (f, da, a) restituisce la 1° posizione della stringa f all'interno della
sottostringa che inizia dal carattere da fino a quello di posizione a (esclusa) della
stringa originale. Se non trova restituisce -1
- index (f, da, a) restituisce la 1° posizione della stringa f all'interno della
sottostringa che inizia dal carattere da fino a quello di posizione a (esclusa) della
stringa originale. Simile a find() solo che se non trova solleva un'eccezione
- rfind (f, da, a) e rindex (f, da, a) funzionano come find e index ma mi
danno l’ultima posizione trovata
= FUNZIONI che effettuano test sulla stringa
- isalnum () restituisce True se tutti i caratteri della stringa sono alfanumerici
- isalpha () restituisce True se tutti i caratteri della stringa sono alfabetici (a-z,
A-Z e lettere accentate)
- isdecimal () restituisce True se tutti i caratteri della stringa sono cifre (0-9)
- islower () restituisce True se tutti i caratteri della stringa sono minuscoli
- isnumeric () restituisce True se la stringa è un numero. Anche gli esponenti
come ² e ¾ sono considerati valori numerici. Non sono considerati numeri i
negativi e i decimali!
- istitle () restituisce True se le iniziali di ogni parola sono maiuscole mentre il
resto è minuscolo
- isupper () restituisce True se tutti i caratteri della stringa sono maiuscoli
= str.encode (s, codifica, errore): codifica la stringa s utilizzando lo schema di
codifica specificato come argomento. Se non viene specificata alcuna codifica, verrà
utilizzato "utf-8". Il 2° argomento specifica invece come trattare l'errore (es. “ignore” =
ignora i caratteri che non possono essere codificati; “replace” = rimpiazza il carattere
incodificabile con un punto interrogativo)
= str.format (s, val1, val2, ...): formatta i valori specificati e li inserisce nel
segnaposto della stringa s. Il segnaposto è definito utilizzando le parentesi graffe: { }. Il
metodo format() restituisce quindi una stringa formattata
(slide 19/20/21 non riportate, approfondimenti su format su tabelle sito)
4) TIPO SEQUENZA ( tipo tuple / liste / str ) (analizzati nello specifico in un capitolo più avanti)
= tipi di dati avanzati sui quali è possibile iterare ed usare l'operatore di appartenenza
in. Inoltre su di esse si può utilizzare la funzione len() e applicare lo slicing (come visto
per le stringhe).
5) TIPO INSIEME ( tipo set ) (analizzati nello specifico in un capitolo più avanti)
= tipi di dato incorporati utilizzati per archiviare raccolte di dati (come Liste, Tuple e
Dizionari). I set vengono utilizzati per memorizzare più elementi (volendo di tipo
diverso) in una singola variabile. Un set è sostanzialmente una raccolta di dati non
ordinata, non contengono valori duplicati e non risulta indicizzato. Una volta che il set è
stato creato non possiamo modificare il singolo elemento ma possiamo comunque
aggiungerne dei nuovi oppure rimuoverli. Gli insiemi si scrivono con le graffe.
6) TIPO MAPPATURA ( tipo dict ) (analizzati nello specifico in un capitolo più avanti)
= I dizionari vengono utilizzati per archiviare coppie chiave:valore. Gli elementi del
dizionario possono essere referenziati utilizzando il nome della chiave. I valori nel
dizionario possono essere di qualsiasi tipo.
= Gli elementi del dizionario sono:
• indicizzati a partire dalla versione 3.7 di Python (accessibili mediante indice)
• modificabili ovvero possiamo modificare, aggiungere o rimuovere elementi
dopo che il dizionario è stato creato
• non permettono duplicati nella chiave
7) TIPO NONE
= questo tipo di dato può assumere un solo valore: None. Viene usato in tutte quelle
situazioni in cui intendiamo indicare la mancanza di un valore definito. Per esempio
possiamo usarlo per inizializzare alcune variabili che devono esistere ma che non
- Risolvere un problema di matematica
- Riassumere un testo
- Tradurre una frase
- E molto altro ancora...
Per termini, condizioni e privacy, visita la relativa pagina.