Anteprima
Vedrai una selezione di 5 pagine su 17
Informatica - Programmazione Python, architettura dell'elaboratore Pag. 1 Informatica - Programmazione Python, architettura dell'elaboratore Pag. 2
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Informatica - Programmazione Python, architettura dell'elaboratore Pag. 6
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Informatica - Programmazione Python, architettura dell'elaboratore Pag. 11
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Informatica - Programmazione Python, architettura dell'elaboratore Pag. 16
1 su 17
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Il ciclo while

Ogni ciclo richiede:

  • Inizializzazione (preparare le variabili per iniziare il ciclo)
  • Condizione (per capire se, ad ogni iterazione, il ciclo deve essere eseguito o no)
  • Aggiornamento (modificare qualche variabile all'interno del ciclo, in modo che prima o poi le iterazioni terminino)

Il ciclo while ripete le istruzioni, con valori diversi delle variabili, finché una condizione rimane vera (ciclo sull'indice). Devo aggiornare la variabile!!! Se no il ciclo è infinito.

Un ciclo while controllato da un contatore conta il numero delle ripetizioni effettuate, si ferma quando sono state completate un numero finito di iterazioni.

Un ciclo while controllato da un evento, il numero di iterazioni non è noto in anticipo, la condizione prima o poi diventa falsa.

Quando non si sa quanti elementi ci sono in una lista, si può utilizzare un carattere o un valore speciale per identificare l'ultimo della lista. Questo si chiama valore sentinella, e non fa parte della lista.

es.

salary=0.0 ; while salary >= 0 : …

Posso metterla all’esterno e all’interno

Posso usare una variabile booleana per controllare un ciclo

Break / Continue

Per interrompere anticipatamente un ciclo

For… in

Serve a iterare su tutti i valori di un contenitore (stringa, lista, file, range..), uno alla volta (ciclo sul valore), o acreare un ciclo controllato da un contatore di interi.

Il contenitore range (range(a,b) : a è incluso, b escluso)

enumerate() trasforma un contenitore in una lista di tuple (sequenza di coppie) :

Cicli annidati

Il ciclo annidato sarà indentato all’interno del blocco di codice dell’altro ciclo.

Un esempio utile è l’analisi delle tabelle: il ciclo più esterno itera sulle righe, il più interno sulle colonne.

Il primo ciclo stamperà le righe vuote, il secondo i soggetti nelle righe.

→FUNZIONI

Una funzione è una sequenza di istruzioni a cui viene dato un nome. Si invoca (o chiama) una

ATTENZIONE: non modificare il testo in altro modo, NON aggiungere commenti, NON utilizzare tag h1;

funzione per eseguire le sue istruzioni, e il risultato è restituito dove è stata invocata. Può essere inserita in un'espressione. Gli input della funzione sono gli argomenti. Si può avere anche una funzione senza argomenti. Alcune funzioni predefinite sono abs(), min(), max(), len(), input(), slice(), range(), sorted(), ...

def cubeVolume(sideLenght):
    volume = sideLenght ** 3
    return volume

result1 = cubeVolume(2)

Non modificare le variabili parametro! Per evitare confusioni, va introdotta una variabile diversa. → L'output è il valore restituito (return x). Alcune funzioni non restituiscono alcun valore. Return termina la funzione e passa il valore di ritorno alla funzione che l'ha invocata. Per restituire più valori si utilizza una tupla (return(x,y)). Posso usare più return, o uno solo in questo modo: Se ci si dimentica di un return Python può restituire None.

MainTuttte le istruzioni del programma si devono formattare utilizzando tag html.

Trovare all'interno di funzioni, indicandone una come punto di partenza dell'esecuzione. Si sceglie per convenzione 'main', e serve un'istruzione che invochi la funzione main. Es. togliere i due valori più piccoli

Implementazione di una funzione:

  • Descrivere cosa deve fare la funzione
  • Indicare una lista degli input della funzione (parametri variabili)
  • Determinare i tipi delle variabili parametro e del valore restituito
  • Le variabili possono essere locali (nella funzione) o globali (fuori dalla funzione)

Scrivere lo pseudocodice per ottenere il risultato voluto (espressioni, diramazioni, loop,..)

  • Implementare il corpo della funzione
  • Gestire le eccezioni !!!!!!!!

LISTE E TABELLE

Una lista (/sequenza/array/vettore) è una struttura dati versatile e dinamica, che contiene un numero variabile di elementi, di qualunque tipo, a cui si può avere accesso tramite la loro posizione (indice).

Sia le liste che le stringhe

Sono sequenze e l'operatore [ ] viene usato per accedere ad un elemento di esse.

Le liste possono contenere ogni tipo di elemento, sono mutabili.

Accedere a un elemento della lista: print(values[5])

Sostituire un elemento della lista: values[5] = 87

Se il programma tenta di accedere ad una lista attraverso un indice fuori dal range consentito, il programma genererà un'eccezione durante l'esecuzione.

Creare una copia della lista, una nuova lista con gli stessi elementi nello stesso ordine: (values)

Accedere all'ultimo elemento usare indici negativi: last = values[-1] oppure last = values[len(values)-1]

Posso appendere elementi: friends=[x,y,z] → friends.append("Bob")

Inserire un elemento: friends.insert(2, "Cindy")

Rimuovere un elemento: friends.remove("Bob")

Trovare un elemento: index = friends.index("Emily")

Rimuovere un elemento: friends.pop()

(“Bob”)+Concatenare liste: myfriends yourfriends (crea una nuova lista) extendAggiungere in coda a una lista il contenuto di un’altra: myfriends. (yourfriends) (modifica la stessa)*Replicare: values = [1,2,3] 4 → [1,2,3,1,2,3,1,2,3,1,2,3]Verificare l’uguaglianza o disuguaglianza tra liste: list1 == list2 o !=sumSommare gli elementi della lista: . (x)Sommare o moltiplicare tutti gli elementi per un numero: list + num ; list * numValore massimo o minimo: .max([1,12,4])→12 ; .min([‘Fred’,’Ann’,’Sue’])→’Ann’sortOrdinare una lista: . (x). Ordinare al contrario: .sort(reverse=true)sortedCreare una copia ordinata di una lista: . (x). Copia ordinata al contrario: .sorted(values,reverse=True): stepEstrarre porzioni di una lista: temperatures[6 9] (il primo è incluso, l’ultimo escluso). lista[start : stop : ][6:10]=[3,2] accorcio la lista ; [6:8]=[3,3,3,3,3] allungo la lista ; [6:8] cancello la

porzione ; [ : ]=[ ] cancello tuttijoinUnire gli elementi di una lista usando una stringa come separatore: separator_string. (list)splitSeparare gli elementi di una lista: words = line. () (es. ‘1,2,3’.split(‘,’) → [‘1’,’2’,’3’] )Scambiare elementi: è necessario prima salvarne prima uno in un’altra variabile, per non sovrascriverloAssegnazioni multiple: (a,b)=(3,4) è equivalente a a=3 e b=4TupleUna tupla è una versione immutabile di una lista. È un contenitore ordinato e immutabile.Triple = (5,10, 15)Si possono assegnare variabili multiple in una sola operazione. (ora, minuti, secondi)=(12, 32, 45)Sono utili per lo scambio delle variabili. (lista[0],lista[2])=(lista[2], lista[0])Utili per restituire più valori da una funzione. return (x,y,z)ComprehensionÈ un modo più semplice di creare una lista. [espressione(elemento) for elemento in contenitore if condizione()]es.

copiare la lista num=[1,2,3,4]. Al posto di fare for n in num, my_list.append(n)my_list=[n for n in nums]es. moltiplicare ogni n in num per n → [n*n for n in nums]es. copiare i numeri dispari in num → [n for n in nums if n%2==0]es. creare tutte le coppie tra abc e 123. Al posto di for letter in 'abc'. For num in range(3). list.append(letter,num)[(letter, num) for letter in 'abc' for num in range(3)]es. dizionario che accoppia lista nomi e lista age → {name: age for name, age in zip(name, age)}È possibile indicare più di un contenitore su cui ciclare. es. [r+c for r in righe for c in colonne]lista tupla insieme dizionario[ ] ( ) { } { }TabelleCreare una tabella di zeri con 5righe e 20col :Per accedere agli elementi :Le dimensioni della tabella:len(tab) è il numero delle righelen(tab[0]) è il numero delle colonneSomma della riga i : . Somma della colonna j :FILEPer specificare che il file è Unicode

(e quindi non va aperto con l'encoding del sistema operativo, ma con UTF-8), aggiungere un argomento: encoding='utf-8' nella funzione open

Per evitare di dimenticarsi di chiudere il file si può usare with

Leggere un file :

  • 1 carattere = infile.read(1)
  • N caratteri = infile.read(N)
  • parole di una frase = line.rsplit(".,?!")(r elimina le eventuali punteggiature).

Modi di suddividere una stringa →

  • una riga = infile.readline()
  • l'intero file = infile.readlines() / read()

Modo di suddividere un file in righe → text.split(\n)

  • read(1) legge il prossimo carattere

Scrivere su un file :

  • outfile.write("hello\n"). Occorre aggiungere il carattere di fine linea per poter passare alla linea successiva
  • outfile.writelines() scrive contemporaneamente più righe

Eliminare gli a capo :es. ho la riga con la parola spam\n → line.rstrip() → spam

Leggere il file "estremi.dat" contenente coppie di numeri, e creare il

<file> “differenze.dat” con le loro differenze</file> <code>infile = open(“estremi.dat”, “r”) outfile = open(“differenze.dat”, “w”) for line in infile: numeri = line.split() diff = int(numeri[0]) - int(numeri[1]) outfile.write( f’{diff}\n’ ) infile.close() outfile.close() </code> <h2>Elaborare file in formato CSV (comma separated values)</h2> <p>In caso di file separati da virgola si usa il modulo csv della libreria standard</p> <ul> <li>reader() restituisce un oggetto specializzato nella lettura del file, che posso iterare</li> <li>writer() restituisce un oggetto specializzato nella scrittura del file</li> <li>csvWriter.writerow([“Jhon Smith”,1607, “Senior”, 328])</li> </ul> <h2>Gestione delle eccezioni</h2> <p>meccanismo flessibile per passare il controllo dall’errore a un gestore che lo sappia trattare! Sollevare un’eccezione appena viene rivelato un problema. Gestirla solo quando il problema può essere risolto.</p> <h3>RILEVARE ERRORI</h3> <p>Il programma

deve controllare se sono verificate tutte le condizioni per permettere la normale prosecuzione- Altrimenti il programma solleva un'eccezione- Istruzione : raise 'solleva' un'eccezione- Vi sono diversi tipi di eccezioni (ValueError, IOError, ...) in funzione della causa- All'eccezione può essere assegnato un messaggio descrittivo del problema

Tipi di errore

GESTIRE ERRORI (TRY ... EXCEPT)

Se usiamo delle funzioni che possono generare eccezioni, dobbiamo definire del codice per gestirle

Il blocco try contiene una o più istruzioni che potrebbero causare un'eccezione

Una o più clausole except contengono il gestore per ciascun tipo di eccezione

Se l'eccezione non viene gestita, ciò causa

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

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Irene_Rizzo di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Torino o del prof Corno Fulvio.