NOTA: si consiglia di eseguire una riga alla volta di questo notebook, come fatto a lezione, cercando di capire sia cosa fa ciascuna funzione, sia soprattutto cercando di capire gli eventuali messaggi di errore.
In [ ]:
x=1
In [ ]:
print(x)
In [ ]:
type(x)
In [ ]:
print(x, type(x))
In [ ]:
y=2
z=(x+y)**2 * 3
print("x =", x, ", y =", y, ", z =", z)
In [ ]:
y=1.0
In [ ]:
print(y)
In [ ]:
type(x), type(y)
In [ ]:
type(x+y)
In [ ]:
a = "3.0"
In [ ]:
type(a)
In [ ]:
b = int(a)
In [ ]:
b = float(a)
In [ ]:
type(b)
In [ ]:
x = float(1)/3
y = 1/3
z = 1.0//3.0
print(x+y+z)
In [ ]:
2.4//2.5
ATTENZIONE: La divisione tra numeri interi non considera il resto
In [ ]:
x = 1.0/3
y = 1.0/3
z = 1/3
print(x+y+z)
NOTA: In Python 2.7 questa espressione viene valutata a 0.666666 in quanto z vienve valutata con una divisione tra interi
In [ ]:
1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 == 1.0
In [ ]:
1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10
ATTENZIONE: Ricordarsi di come vengono rappresentati i numeri al calcolatori con la rappresentazione in virgola mobile (floating points).
In [ ]:
x = 1+3j
y = 4+2j
z = 2+1j
print(type(x))
print(x+y*z)
In [ ]:
print(z.real, z.imag, z.conjugate)
In [ ]:
z.conjugate()
In [ ]:
z.real = 3
Per controllare le variabili in memoria (nel workspace):
In [ ]:
who
Per rimuovere una variabile dal workspace:
In [ ]:
del x
In [ ]:
who
In [ ]:
print(x+y+z)
In [ ]:
help(complex)
In [ ]:
# Notare l'identazione nella funzione seguente
def f(x):
"""Funzione che il doppio di x"""
return x*2
In [ ]:
print(type(f))
In [ ]:
f(27)
In [ ]:
f(1.2)
In [ ]:
f(1+3j)
In [ ]:
f("Ciao")
In [ ]:
2*"domanda"
In [ ]:
help(f)
Vogliamo ora scrivere la funzione:
$$f : \mathbb{C} \times \mathbb{C} \rightarrow \mathbb{C}$$con
$$f(x,y) = x^y$$In python scriviamo:
In [ ]:
def Potenza(base, esponente):
"""
Calcola la potenza (base)^(esponente).
"""
return base**esponente
In [ ]:
Potenza(2, 3)
In [ ]:
def Potenza2(base, esponente=2):
"""
Calcola la potenza (base)^(esponente).
Se il secondo parametro non viene passato,
calcola la potenza quadrata, ovvero (esponente=2).
"""
return base**esponente
In [ ]:
print(Potenza2(14))
print(Potenza2(14,3))
In [ ]:
Potenza2(esponente=4, base=10)
Python supporta la possibilità di usare i nomi di variabili usati nella definizione di una funzione per passare gli argomenti (chiamati keyword arguments). Questo si differenza dalla tipica notazione posizionale di molti linguaggi di programmazione, tipo il C, e permette di rendere il codice più leggibile e di evitare ambiguità nel passare gli argomenti ad una funzione. Si noti infine che nella definizione della funzione Potenza2 è stato definito un parametro di default (default parameter values) per definire il valore dell'esponente.
In [ ]:
As = [5,3,2,8,7,13]
print(As)
print(type(As))
In [ ]:
# help(list)
IMPORTANTE: Abituarsi ad usare il tasto tab per avere il completamento automatico
In [ ]:
# Aggiungere un elemento ad una lista
As.append(27)
print(As)
In [ ]:
As.remove(7)
print(As)
In [ ]:
As.insert(4, 12)
print(As)
In [ ]:
# Invertire l'ordine di una lista
As.reverse()
print(As)
In [ ]:
# Ordinamento come funzione
Bs = sorted(As)
print(As, Bs)
In [ ]:
# Ordinamento "IN_PLACE"
As.sort()
print(As)
COMMENTO: Ricordarsi la differenza che alcune funzioni operano IN PLACE
In [ ]:
print(As)
for x in As:
print(x)
# Equivalente in ANSI-C
# for (int i=0; i<n; i++)
# printf("%f\n", As[i]);
In [ ]:
# Iterare gli elementi di una lista (esempio di commento in python)
for n in As:
print("x=", str(n)," \t -> f(x^3) =",str(Potenza(n,3)))
In [ ]:
list(map(lambda x: Potenza(x,3), As))
In [ ]:
# Iterare una lista usando una variabile
# per l'indice dell'elemento nella lista
for i,n in enumerate(As):
print("indice:", i, " -> As["+str(i)+"] = " + str(n))
In [ ]:
# Iterare una lista usando una variabile
# per l'indice dell'elemento nella lista
for i,n in enumerate(reversed(As)):
print("indice:", i, " -> As["+str(i)+"] = " + str(n))
In [ ]:
As
In [ ]:
As[3:5]
In [ ]:
As[-1]
In [ ]:
head, tail = As[0], As[1:]
In [ ]:
print(head, tail)
In [ ]: