Anteprima
Vedrai una selezione di 3 pagine su 8
Python - parte 1 Pag. 1 Python - parte 1 Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Python - parte 1 Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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

Dettagli
Publisher
A.A. 2023-2024
8 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Jas00704 di informazioni apprese con la frequenza delle lezioni di Fondamenti di programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Brescia o del prof Sechi Marco.