Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
VARIABILI IN FUNZIONI
Variabili locali = definite in una funzione/blocco di codice;
Variabili globali = definite al di fuori delle funzioni/blocchi di codice;
Esempio:
balance = 10000
def function(amount):
global balance #dichiarazione "global" per usare variabili globali in funzioni
if balance > amount:
etc…
TOOLKIT = raccolta di funzioni o classi tra loro correlate, aventi l'obiettivo di risolvere un problema specifico; le funzioni di un toolkit possono essere inserite in un file a sé, per poi importarle in qualsiasi programma. Esempio di toolkit è "imgtools" (per la modifica delle immagini).
5. LISTA
LISTA = contenitore che memorizza valori. Esempio:
values = [1, 2, 3, 7, 10]
print(values[3]) # Printa il numero 7 (indice = 3)
Dunque le liste le troviamo nella forma list = [n1, n2, n3…]; elemento della lista = list[i] con i < len(list) - 1 (list[0] ≤ i ≤ len(list)-1), altrimenti dà errore di intervallo.
- [“out of range”]). Con , siparte a contare gli elementi dal fondo (-1 ultimo, -2 penultimo e così via).
- SCANSIONE DI UNA LISTA:
for i in range(len(list1)): print(i, list1[i]) # Ottengo l’indice e l’elemento relativo della lista
- Questa scrittura è uguale a quella della funzione enumerate( ):
for (i, element) in enumerate(list1): print(i, element)
- Riferimenti a liste:
list1 = [1, 2, 3, 4, 5] list2 = list19 DOMIZIO MATTIA list1[3] = 10 print(list2[3]) # Printa il numero 10
- OPERAZIONI CON LISTE:
Aggiungere elementi a liste list1.append(element)→ Aggiungere elemento in posizione specifica list1.insert(i, element) [ad ogni insert→ cambiano indici] Aggiungere tutti gli elementi di una lista ad un’altra: Concatenazione list1 + list2→o list1.extend(list2)o Cercare elemento in lista list1.index(element) # Dà l’indice della 1^ occorrenza→ dell’elemento nella lista oppure, se non c’è l’elemento
nella lista, da “ValueError”
Eliminare un elemento tramite il suo indice list1.pop(2)
[con solo list1.pop( )
si→ elimina l’ultimo]
Eliminare un elemento list1.remove(element)
→ Eliminare tutti gli elementi della lista list1.clear( )
→ Replicare elementi della lista list1 * n
→ Verificare se due liste sono uguali list1 ==list2
→ Sommare tutti i valori della lista sum(list1)
→ Massimo e minimo di una lista max(list1) / min(list1)
→ Ordinare una lista: →secondo l’ordinamento lessicografico crescente list1.sort( )
/o list1.sort(reverse=False)
→secondo l’ordinamento lessicografico decrescente list1.sort(reverse=True)
o →secondo l’ordinamento crescente, ma creando una nuova lista sorted(list1)
oCopiare elementi lista in una nuova lista list2 = list(list1)
/ list1.copy( )
→ Rovesciare l’ordine degli elementi list1.reverse( )
→ Porzioni di lista (slice) list[from : to]
list1[1 : 4] = [1, 2]
→ sostituisco i valori della list1
con indice da 1 a 4 (escluso) con i valori 1 e 2 (riducendo anche in questo caso la len(list1)
).
Scambio di elementi della lista:
- element = list1[i]
- list1[i] = list1[j]
- list1[j] = element
tramite le TUPLE (list1[i], list1[j]) = (list1[j], list[i])
# Tupla = (n1, n2, etc...)
sono come le liste, ma con parentesi tonde e non possono essere modificate (utili nel return delle funzioni)
DA STRINGHE A LISTE (e viceversa):
stringa.split(sep, maxsplit=n)
: restituisce una lista di sottostringhe ottenute suddividendo la stringa ad ogni occorrenza del separatore (sep; se sep è omesso, per default è spazio vuoto). Se maxsplit è specificato, saranno fatte al massimo n separazioni partendo da sinistra;
stringa.rsplit(sep, maxsplit=n)
: come split, ma suddivide la stringa partendo da destra;
stringa.splitlines()
: come split, ma usa come separatore il '\n',suddivide quindi la stringa in una lista contenente le singole righe di testo presenti nella stringa;
sep.join(list1): restituisce un’unica stringa contenente tutti gli elementi della list1, separati da sep.
TABELLA (o matrice) = disposizione dei valori costituita da righe e colonne; accedo aglielementi della tabella usando 2 indici (tabella[i][j]); gli elementi adiacenti si trovano ponendogli indici con un +1 o un -1. Esempio di tabella:
10 DOMIZIO MATTIA
for i in range(len(tabella)):
for j in range(len(tabella[i])):
print(tabella[i][j], end=" ")
print()
6. FILE E ECCEZIONI
FILE:
Aprire e chiudere file:
infile = open("input.txt", "r") # Memorizza in variabili i file "input.txt" e "output.txt"
outfile = open("output.txt", "w") # Modalità di apertura: "r" = reading, "w" = writing
# Leggi dati da infile
# Scrivi dati in outfile
infile.close() # Chiudi i file
dopol'elaborazione outfile.close()
Tutte le modalità di apertura di un file:
- Leggere un file:
string = file.readline()
restituisce in una stringa la successiva riga di testo dal file (seguita da "\n" se dopo c'è un'altra riga); se è stata raggiunta la fine del file, viene restituita una stringa vuota (""); se il file contiene una riga vuota,readline
restituisce "\n" (new line) [vengono restituite solo stringhe, quindi per avere dei numeri vanno convertiti] - Scansione di un file riga per riga:
line = infile.readline()
while line != "":
line = infile.readline()
Scrivere un file: quando un file è stato aperto in modalità di scrittura ("w"), vi si può scrivere del testo con il metodo write("stringa (con eventualmente operatori di formato per i numeri)")
:
outfile.write("Hello, World!\n")
⚠ In alternativa, si può scrivere testo in un file con la
funzione print: print(“Hello, World!”, file=outfile) oppure, senza andare a capo, print(“Hello, World!”, end=“”, file=outfile)
Si possono anche scrivere più righe contemporaneamente con il metodo outfile.writelines(righe), che ha come parametro/argomento una lista di stringhe, ovvero le righe, ciascuna delle quali delle avere già scritto il carattere new line (“\n”).
Per aprire un file non nella stessa directory in cui stiamo lavorando, bisogna conoscerne il percorso file (“file path”); inoltre, per scrivere le backslash del percorso, dobbiamo inserirne 2 al posto di 1: infile = open(“c:\\homework\\input.txt”, “r”)
Modificare le righe di un file: line.lstrip() - elimina i caratteri di spaziatura (spazi vuoti, caratteri di tabulazione e new line) partendo da sinistra (se si usa line.lstrip(caratteri), vengono eliminati da sinistra i caratteri) line.rstrip() uguale a
line.lstrip() ma da destra line.strip() uguale ma sia da destra che da sinistra Suddividere le righe di un file in liste:line.split() prende le parole separate da spazi nella riga e le mette in una lista line.split(separatore) uguale ma con un separatore definito (e non lo spazio vuoto) line.split(separatore, maxsplit) maxsplit = massimo di suddivisioni eseguite, generando una lista di len = maxsplit + 1line.rstrip(separatore, maxsplit) come split() ma partendo da destra (dalla fine) line.splitlines() suddivisa usando come separatore della riga new line (“\n”) Questi metodi di suddivisione delle stringhe sono specialmente utili nei testi strutturati, consequenze di dati composti (record di dati) contenenti ciascuna più dati diversi sulla stessa riga(es. massa-volume-superficie)Leggere i caratteri di una stringa:stringa = file.read() legge l’intero contenuto del file, restituendolo come una singolastringa; se invece
import re
file = open("nome_file.txt", "r")
# legge i successivi n° caratteri dal file e li restituisce in una stringa
char = file.read(n)
# restituisce una stringa vuota se abbiamo raggiunto la fine del file
if char == "":
char = "“”"
# legge tutto il file come una lista di stringhe (una stringa per ogni riga del file)
lines = file.readlines()
# utilizza il modulo re per suddividere la stringa in base a un'espressione canonica
splitline = re.split("espressione_canonica", line)
file.close()
"[^A-Za-z]+"tokens = split(regex, line) # ["http", "python", "org"]
Carattere = valore compreso tra 0 e 255; ci sono vari modi per codificarli, uno è l’UTF-8 ecodifica ciascun carattere come una sequenza di byte (da 1 a 4); se dobbiamo elaborare filecon caratteri speciali (cinesi, caratteri accentati o simboli speciali per esempio), dobbiamousare la codifica UTF-8:
infile = open("input.txt", "r", encoding=“utf-8”) outfile = open("output.txt", "w", encoding=“utf-8”)
Elaborare file in formato CSV: la maggior parte delle applicazioni che elabora fogli di calcoloarchivia i dati in un file con un proprio formato, ma per fortuna sono anche in grado di copiarei dati in un formato portabile, chiamato CSV (Comma-Separated Values). Esempio di12 DOMIZIO MATTIAprogramma che legge dati da un file csv che contiene informazioni su film (nome, anno, regia,produzione, attori), ignora i dati
from csv import reader, writer # Libreria csv
infile = open("movies.csv")
csvReader = reader(infile) # Stessa funzione del open(file, "r") ma per file csv
outfile = open("filteredMovies.csv", "w") # Stessa funzione del open(file, "w") ma per file csv
csvWriter = writer(outfile)
headers = ["Name", "Year", "Actors"] # Scrivo nel file le intestazioni delle colonne
csvWriter.writerow(headers) # questo modulo aggiunge nel file una lista scritta su una riga
next(csvReader) # Nella lettura ignora la riga delle intestazioni
for