Laboratorio di Python
Autovalutazione
Sara Zuppiroli
Università di Bologna
27 marzo 2013
Sommario
1 Autovalutazione
Sara Zuppiroli Laboratorio di Python
Esercizio
Dire cosa stampa il seguente frammento di codice python:
A=[1,2]
B=[3,A,[1,2]]
def g(x):
x[1]=5 A[0]=8 M=B[:]
print(B) g(B) M[1]=7 print(B,M,A)
Esercizio 2
Dire cosa stampa il seguente frammento di codice python:
def d(a):
a[1]=5 a[0][1]=8 h=[2,7]
b=[h,h,3]
c=b[:]
d(b)
print(b,c,h)
Sara Zuppiroli Laboratorio di Python
Esercizio 3
Scrivere una funzione che preso come parametro una tupla t mi stampi tutte le tuple che sono prefissi della tupla data t. (es. t=(2,3,1) -> (2,3,1);(2,3); (2,); ()) Implementare in maniera ricorsiva e iterativa tale funzione.
Esercizio 4
Si dica se la seguente funzione implementa correttamente
l’operazione che inverte separatamente le due metá di una lista (cioé, ad esempio, che trasforma [1,2,3,4,5,6] in [3,2,1,6,5,4]).
def inve(L):
m=len(L)//2 for i in range(m):
L[i],L[m-i-1] = L[m-i-1],L[i]
L[m+i],L[-(i+1)] = L[-(i+1)],L[m+i]
Sara Zuppiroli Laboratorio di Python
Soluzione 1
[3, [1, 2], [1, 2]]
([3, 5, [1, 2]], [3, 7, [1, 2]], [8, 2])
Soluzione 2
([[2, 8], 5, 3], [[2, 8], [2, 8], 3], [2, 8])
Sara Zuppiroli Laboratorio di Python
Soluzione 3
Ricorsiva
def stampa_st(t):
if t==():
print(t) else:
print(t)
stampa_st(t[:len(t)-1]) t=(1,3,5)
stampa_st(t)
Soluzione 3
Iterativo
def stampa_st_it(t):
for i in range(0,len(t)):
print(t[:len(t)-i])
t=(2,3,1) stampa_st_it(t)
Sara Zuppiroli Laboratorio di Python
Soluzione 4
Esempio
def inve(L):
m=len(L)//2 for i in range(m):
L[i],L[m-i-1] = L[m-i-1],L[i]
L[m+i],L[-(i+1)] = L[-(i+1)],L[m+i]
Restituisce la lista esattamente uguale perché la funzione effettua due volte l’operazione che inverte gli elementi, e quindi la lista L é esattamente la stessa prima e dopo l’esecuzione della funzione.