La programmazione è una pratica che richiede esercizio e dedizione, che tu sia alle prime armi o che sia ormai esperto di un determinato linguaggio. Prima ancora di cimentarsi in progetti più complessi bisogna avere una certa dimestichezza con le strutture e i tipi di dato di un determinato linguaggio di programmazione.
Se vogliamo imparare a programmare in Python esercitarsi è sempre una buona scelta, visto che la sintassi del linguaggio Python si distingue da quella degli altri linguaggi di programmazione ad oggetti. Programmare con Python vuol dire padroneggiare uno dei linguaggi di programmazione più usati degli ultimi anni, grazie anche a cosa si può fare con Python: sviluppo web, automazione dei task, analisi dei dati, data visualization, algoritmi di intelligenza artificiale, machine learning, game development, e la lista potrebbe continuare.
Questi i motivi per cui ad oggi programmare in Python è un requisito molto richiesto dalle software house. Ma per imparare Python bisogna esercitarsi, su quelli che sono i fondamentali del linguaggio.
Per farlo vedremo una serie di 5 esercizi Python, di difficoltà graduale, per testare le tue capacità a livello di comprensione del codice e dei costrutti del linguaggio.
A fine articolo troverai le soluzioni…ma non sbirciare!
- Scrivi un programma in Python per estrarre valori da un dizionario noto e crea una lista di liste da questi valori.
- Scrivi un programma Python per trovare quattro numeri interi pari positivi la cui somma è un dato numero intero. Esempio – input: n = 100 output: [94,2,2,2]
- Scrivi una funzione Python per rimuovere i duplicati da una lista preservando l’ordine degli elementi al suo interno.
- Scrivi una classe Python per implementare la funzione elevazione_potenza(x,n) (in modo più formale pow(x,n)).
- Scrivi una funzione in Python che prende due stringhe, conta il numero di volte che ogni stringa contiene gli stessi tre caratteri allo stesso indice. Stampa l’output.
Svolgendo questi 5 esercizi potrai skillarti non solo sui potenti tipi di dato, ma anche sul ciclo for in Python o sulle definizioni di tipi di oggetti, come le classi, caratteristica chiave della programmazione orientata agli oggetti. Prova a svolgere autonomamente questi brevi esercizi mettendo alla prova le tue conoscenze in Python!
Soluzioni:
- Essere abili con il linguaggio Python vuol dire padroneggiare liste e dizionari, due potenti tipi di dato. In questo esercizio è cruciale focalizzarsi sul concetto di chiave-valore insito nel dizionario Python.
def test(dictt,keys):
return [list(d[k] for k in keys) for d in dictt]
students = [
{'student_id': 1, 'name': 'Jean Castro', 'class': 'V'},
{'student_id': 2, 'name': 'Lula Powell', 'class': 'V'},
{'student_id': 3, 'name': 'Brian Howell', 'class': 'VI'},
{'student_id': 4, 'name': 'Lynne Foster', 'class': 'VI'},
{'student_id': 5, 'name': 'Zachary Simon', 'class': 'VII'}
]
print("\nOriginal Dictionary:")
print(students)
print("\nExtract values from the said dictionarie and create a list of lists using those values:")
print("\n",test(students,('student_id', 'name', 'class')))
print("\n",test(students,('student_id', 'name')))
print("\n",test(students,('name', 'class')))
- Il ciclo for in Python si differenzia da quelli degli altri linguaggi di programmazione. Grazie a questo esercizio puoi fissare questo concetto in maniera netta, implementando dei cicli for innestati per ottenere l’output desiderato. La funzione find_positives prende un numero intero in input e tramite una serie di for individua i 4 numeri interi positivi svolgendo un calcolo con l’operatore %, detto operatore modulo. Viene utilizzato per ottenere il resto di una divisione.
def find_positives(n):
for i in range(n, 0, -1):
if not i % 2 == 0:
continue
for k in range(n - i, 0, -1):
if not k % 2 == 0:
continue
for j in range(n - k - i, 0, -1):
if not j % 2 == 0:
continue
for d in range(n - k - j - i, 0, -1):
if not d % 2 == 0:
continue
if i + k + j + d == n:
return [i, k, j, d]
n = 100
print("Four positive even integers whose sum is",n)
print(find_positives(n))
n = 1000
print("\nFour positive even integers whose sum is",n)
print(find_positives(n))
n = 10000
print("\nFour positive even integers whose sum is",n)
print(find_positives(n))
n = 5000
print("\nFour positive even integers whose sum is",n)
print(find_positives(n))
- Le liste sono un costrutto molto potente, in questo esercizio sarà fondamentale servirsi dei metodi liste Python, messe a disposizione dal linguaggio per modellarne gli elementi. Il metodo dict.fromkeys ritorna un dizionario con le chiavi e i valori specificati come argomento, in questo caso la lista passato come argomento alla funzione remove_duplicates.
16.
def remove_duplicates(lst):
return list(dict.fromkeys(lst).keys())
nums = [2,4,3,5,4,6,9,2,1]
print("Original lists:")
print(nums)
result = remove_duplicates(nums)
print("Remove duplicates from the said list while preserving the order:")
print(result)
chars = ['b','a', 'a', 'c', 'c', 'c','d','e','a', 'b', 'b', 'b']
print("\nOriginal lists:")
print(chars)
result = remove_duplicates(chars)
print("Remove duplicates from the said list while preserving the order:")
print(result)
- Le classi rappresentano una caratteristica identificativa dei paradigmi ad oggetti. Python nonostante si differenzi molto dagli altri linguaggi ad oggi, ne eredita le particolarità. In questo codice Python vedremo l’utilizzo di una classe per definire al suo interno una funzione. Da notare che per richiamare la funzione pow bisogna istanziare la classe nel print.
class py_squared:
def pow(self, x, n):
if x==0 or x==1 or n==1:
return x
if x==-1:
if n%2 ==0:
return 1
else:
return -1
if n==0:
return 1
if n<0:
return 1/self.pow(x,-n)
val = self.pow(x,n//2)
if n%2 ==0:
return val*val
return val*val*x
print(py_ squared ().pow(2, -3));
print(py_ squared ().pow(3, 5));
print(py_ squared ().pow(100, 0));
23.
- La modellazione delle stringhe è una pratica molto utile nella programmazione. In questo breve script sfrutteremo il for in range di Python per iterare su una grandezza specifica in modo tale da poter controllare, tramite l’indice del for, se le tre lettere vengono ripetute all’interno delle due stringe passata in input alla funzione.
def compare_chars(str1, str2):
count = 0
for i in range(len(str1) - 2):
if str1[i:i+3] == str2[i:i+3]:
count += 1
return count
str1 ="Formula One"
str2 ="For Each Python"
print("Original strings:", str1, str2)
print("Check said two strings contain three letters at the same index:")
print(compare_chars(str1, str2))
str1 ="Red White"
str2 ="Red White"
print("Original strings:", str1, str2)
print("Check said two strings contain three letters at the same index:")
print(compare_chars(str1, str2))
str1 ="Red White"
str2 ="White Red"
print("Original strings:", str1, str2)
print("Check said two strings contain three letters at the same index:")
print(compare_chars(str1, str2))
Gli esercizi di coding sono un aspetto determinante nell’apprendimento di un linguaggio di programmazione. È importante esercitarsi, in quanto si rivela molto utile per poter vedere con i propri occhi il funzionamento di determinate funzioni built-in o costrutti che concettualmente sono molto astratti.
Per imparare Python bisogna avere la pazienza di esercitarsi, ma anche di sbagliare. E tu sei riuscito a completare tutti gli esercizi? No? Non è un problema! Puoi ripassare alcuni concetti fondamentali di python con la nostra guida Python in italiano, e riprovare! Cosa aspetti?