La specifica del formato di input è la seguente: 13 record di campi separati da tabulazione di cui il primo è il record di intestazione degli anni (composto da N campi) e gli altri 12 sono i record delle piogge mensili (uno per ciascun mese) composti da N+1 campi (di cui il primo è il nome del mese) e i rimanenti N sono le piogge del mese lungo gli N anni.
Si richiede di calcolare:
Parametri di input:
Requisiti generali:
compute_mean()
per calcolare la media di una lista di numericount_elements_greater_than()
per contare il numero di valori che sono almeno una certa sogliaVariabili di output:
means_per_month_tuples
di 12 tuple delle precipitazioni medie mensili, in cui ogni tupla contiene le prime tre lettere del nome del mese in maiuscolo come primo elemento e la media lungo gli anni come secondo elementotot_per_year_tuples
di N tuple delle precipitazioni totali annue, in cui ogni tupla contiene l'anno come primo elemento e la precipitazione totale come secondo elementocount_per_year_tuples
di N tuple del numero di mesi con almeno p mm di pioggia (per anno), in cui ogni tupla contiene l'anno come primo elemento e il numero di mesi con almeno p mm di pioggia come secondo elementoLo statement
with open(input_file_name, ’r’) as input_file:
file_rows = input_file.readlines()
permette di ottenere l'handle in lettura input_file
al file input_file_name
e di ottenere la lista file_rows
delle sue righe come oggetti di tipo str
. Al termine l'handle viene chiuso e lo script può processare la lista file_rows
.
Una matrice è di fatto una lista di liste della stessa dimensione. Ad esempio la seguente è una matrice di 3 righe e 4 colonne
In [1]:
lista = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
lista
Out[1]:
Python permette di "forzarla" ad essere pensata come matrice in modo da usare tutte le funzioni tipiche delle matrici. Basta infatti usare la funzione array()
del modulo numpy
(che mette a disposizione funzioni scientifiche aggiuntive tra cui quelle di gestione delle matrici)
In [2]:
import numpy as np
matrice = np.array(lista)
matrice
Out[2]:
L'accesso degli elementi della matrice avviene seguendo la sintassi di accesso per le liste
In [3]:
lista[0][2]
Out[3]:
In [4]:
matrice[0][2]
Out[4]:
In [5]:
len(matrice)
Out[5]:
La funzione transpose()
di numpy
In [6]:
matrice_t = np.transpose(matrice)
matrice_t
Out[6]:
oppure il metodo transpose()
degli oggetti di tipo matrice
In [7]:
matrice_t = matrice.transpose()
matrice_t
Out[7]:
restituiscono la matrice trasposta
range()
dà la possibilità di iterare sugli interi da 0 al valore dell'argomento passato -1
In [8]:
for i in range(10):
print(i)
int()
converte in intero il valore passato come argomento.Esempio con stringa di cifre (letterale intero) come argomento
In [9]:
int('13')
Out[9]:
Esempio con decimale come argomento
In [10]:
int(13.6)
Out[10]:
float()
converte in decimale il valore passato come argomento.Esempio con stringa di cifre (letterale intero) come argomento
In [11]:
float('13')
Out[11]:
Esempio con stringa di cifre (letterale decimale) come argomento
In [12]:
float('13.5')
Out[12]:
In [13]:
float(13)
Out[13]:
sum()
restituisce la somma degli elementi della lista o della tupla passata come argomentoEsempio con lista di interi come argomento
In [14]:
sum([1, 2, 3.0, 4, 5])
Out[14]:
Esempio con lista di interi e decimali come argomento
In [15]:
sum([1, 2, 3.0, 4.0, 5])
Out[15]:
upper()
degli oggetti di tipo str
restituisce una copia in maiuscolo della stringa invocante
In [16]:
'ciao'.upper()
Out[16]:
rstrip()
degli oggetti di tipo str
restituisce una copia della stringa invocante dopo avere rimosso il più lungo suffisso contenente solo caratteri della stringa passata come argomento. Se l’argomento viene omesso, allora il metodo rimuove tutti i caratteri di tipo spazio (tabulazione, newline, etc.)
In [17]:
'aaaa '.rstrip(' ')
Out[17]:
In [18]:
'aaaa '.rstrip()
Out[18]:
In [19]:
'aaaa\n'.rstrip()
Out[19]:
In [20]:
'aaaa\n'.rstrip(' ')
Out[20]:
split()
degli oggetti di tipo str
restituisce la lista degli elementi ottenuti separando la stringa invocante tramite il delimitatore (oggetto di tipo str
) passato come argomento. Se l’argomento viene omesso la stringa invocante viene separata usando spazi di qualsiasi tipo.
In [21]:
'aa aa aa'.split(' ')
Out[21]:
In [22]:
'aa aa aa'.split()
Out[22]:
In [23]:
'aa aa aa'.split()
Out[23]:
In [24]:
'aa aa aa'.split(' ')
Out[24]:
In [25]:
'aa\taa\taa'.split()
Out[25]:
pop()
degli oggetti di tipo list
rimuove e restituisce l’elemento della lista invocante che si trova nella posizione specificata dall'indice passato come argomento.
In [26]:
lista = [1,2,3,4]
lista.pop(1)
Out[26]:
In [27]:
lista
Out[27]:
append()
degli oggetti di tipo list
aggiunge in coda alla lista invocante il valore passato come argomento
In [28]:
lista = [1,2,3,4]
lista.append([5, 6])
In [29]:
lista
Out[29]:
count()
delle sequenze restituisce il numero di elementi della sequenza invocante che sono uguali al valore passato come argomento
In [30]:
[True,False,True,True].count(True)
Out[30]:
In [31]:
'aabbabbbba'.count('a')
Out[31]: