✏️ Esercizi#
Exercise 1
Esegui in Python le operazioni seguenti. Gli operadi sono 3 e 4.
addizione (+)
sottrazione (-)
moltiplicazione (*)
operatore modulo (%)
divisione (/)
esponenziazione (**)
divisione intera (//)
Solution to
a = 3
b = 4
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a ** b)
print(a % b)
print(a // b)
Exercise 2
Determina il tipo dei dati seguenti.
10
9.8
3.14
[“Maria”, “Python”, “Firenze”]
Il tuo nome
[1, 2, 3]
{1, 2, 9}
{«a», «b», «c»}
{“nome”: «Corrado»}
(9.8, 3.14, 2.7)
Solution to
print(type(10))
print(type(9.8))
print(type(3.14))
print(type(['Maria', 'Python', 'Firenze']))
print(type('Corrado'))
print(type([1, 2, 3]))
print(type({'nome':'Corrado'}))
print(type({1, 2, 9}))
print(type({"a", "b", "c"}))
print(type((9.8, 3.14, 2.7)))
Exercise 3
Usando Python, trova la distanza euclidea tra i punti (2, 3) e (10, 8).
Solution to
# Per capire il problema, disegnamo prima i due punti e il segmento che li unisce. Il problema chiede
# di trovare la lunghezza di tale segmento.
import matplotlib.pyplot as plt
point1 = [2, 3]
point2 = [10, 8]
x_values = [point1[0], point2[0]]
y_values = [point1[1], point2[1]]
plt.plot(x_values, y_values, 'bo', linestyle="--")
plt.text(point1[0]+0.4, point1[1], "Punto 1")
plt.text(point2[0]-1.1, point2[1], "Punto 2")
plt.show()
# Usando il teorema di Pitagora, dobbiamo calcolare (10-2)**2 + (8-3)**2 sotto radice.
import numpy as np
np.sqrt((10-2)**2 + (8-3)**2)
Exercise 4
Date le seguenti variabili,
thing = "light"
e speed = 299792458
, si usi la formattazione f-string per stampare The speed of light is 2.997925e+08 m/s.
.
Solution to
thing = "light"
speed = 299792458 # m/s
print(f"The speed of {thing} is {speed:2e} m/s.")
Exercise 5
Si definisca la variabile language
. Si scriva uno script che usa if/elif/else
e ritorna
Mi piacciono i serpenti!
selanguage
èpython
;Sei un pirata?
selanguage
èR
;Che cosa significa [valore della variabile <language>]?
selanguage
è qualsiasi altra cosa.
Solution to
language = "python"
if language.lower() == "python":
print("Mi piacciono i serpenti!")
elif language.lower() == "r":
print("Sei un pirata?")
else:
print(f"Che cosa significa {language}?")
Exercise 6
Si crei una funzione che accetta due numeri e ritorna True se la somma dei due numeri è maggiore di 0 o False se la somma è minore o uguale a 0.
Solution to
def mysum(a, b):
return True if a+b > 0 else False
mysum(2, -3)
Exercise 7
Si usi una list comprehension per sommare 10 a ciascun elemento della seguente lista: [1, 2, 3, 4, 5].
Solution to
mylist = [1, 2, 3, 4, 5]
[element +10 for element in mylist]
Exercise 8
Si usi una list comprehension sulla seguente lista [“giovanna”, “Maria”, “luca”, “Fabio”, “valentina”], in maniera tale da selezionare solo i nomi la cui prima lettera è maiuscola. Si usi la funzione str.isupper()
.
Solution to
names = ['giovanna', 'Maria', 'luca', 'Fabio', 'valentina']
[_ for _ in names if _[0].isupper()]
Exercise 9
Si crei un dizionario d
costituito da 10 elementi nel quale la chiave ha la forma “key-0”, “key-1”, ecc. e i corrispondenti valori vadano da 0 a 9. Da questo dizionario si recuperi il valore associato a key-5
.
Solution to
keys = [f"key-{k}" for k in range(10)]
vals = range(10)
d = {k:v for k, v in zip(keys, vals)}
d['key-5']
Exercise 10
Si scriva un ciclo for che, per i numeri da 1 a 5, stampi «Il quadrato di 1 è 1.», «Il quadrato di 2 è 4.», ecc.
Solution to
numbers = [1, 2, 3, 4, 5]
for i in numbers:
square = i**2
print(f"Il quadrato di {i} è {square}.")
Exercise 11
Anziché usare un ciclo for, si innalzino al quadrato gli elementi della lista dell’esercizio Exercise 10 usando una list comprehension.
Solution to
numbers = [1, 2, 3, 4, 5]
[_ **2 for _ in numbers]
Exercise 12
Usando if/else
in un ciclo for
, per ciascun elemento di una lista di numeri da 0 a 10, si stampi un messaggio che specifica se il numero è pari o dispari. (suggerimento: si usi l’operatore %
)
Solution to
for i in range(1, 11):
if i % 2 == 0:
print('Numero pari:', i)
else:
print('Numero dispari:', i)
Exercise 13
Si crei una list comprehension che seleziona i numeri pari da una lista di interi da 0 a 10.
Solution to
import numpy as np
numbers = np.arange(11)
even = [_ for _ in numbers if _ % 2 == 1]
even
Solution to
numbers = [4, 2, 5, 7, 8]
for i, v in enumerate(numbers):
print('numbers[',i,'] =', v)
Exercise 14
Per la lista [1.23, 10, “Maria”, 20, “Giovanni”], si stampino l’elemento 1 e l’elemento 4.
Solution to
my_list = [1.23, 10, 'Maria', 20, 'Giovanni']
print(my_list[1])
print(my_list[4])
Exercise 15
Per la lista [1.23, 10, “Maria”, 20, “Giovanni”], si stampino il penultimo e il quartultimo elemento.
Solution to
my_list = [1.23, 10, 'Maria', 20, 'Giovanni']
print(my_list[-2])
print(my_list[-4])
Exercise 16
Per la lista [1.23, 10, “Maria”, 20, “Giovanni”], si estraggano mediante list slicing il terzo, quarto e quinto elemento.
Solution to
my_list = [1.23, 10, 'Maria', 20, 'Giovanni']
print(my_list[2:5])
Exercise 17
Per la lista [1.23, 10, “Maria”, 20, “Giovanni”], usando il ciclo for
e la keyword in
, si stampino gli elementi della lista.
Solution to
for item in my_list:
print(item)
Exercise 18
Per la lista [1.23, 10, “Maria”, 20, “Giovanni”], usando il ciclo for
e utilizzando l’indice degli elementi, si stampino gli elementi della lista.
Solution to
my_list = [1.23, 10, 'Maria', 20, 'Giovanni']
for i in range(0, len(my_list)):
print(my_list[i])
Exercise 19
Si concatenino le liste [1, 2, 3, 4] e [5, 6, 7, 8].
Solution to
my_list1 = [1, 2, 3, 4]
my_list2 = [5, 6, 7, 8]
my_list3 = my_list1 + my_list2
print(my_list3)
# oppure
my_list1.extend(my_list2)
print(my_list1)
Exercise 20
Si crei la lista [1, 2, 3]. Si faccia una copia della lista usando l’operatore =
. Si modifichi il primo elemento della lista originaria ponendolo uguale a 99. Si stampino i valori della seconda lista.
Solution to
my_list1 = [1, 2, 3]
new_list = my_list1
print(new_list)
my_list1[0] = 99
print(my_list1)
print(new_list)
Exercise 21
Si crei la lista [1, 2, 3]. Si faccia una copia della lista usando il metodo copy()
. Si modifichi il primo elemento della lista originaria ponendolo uguale a 99. Si stampino i valori della seconda lista.
Solution to
my_list1 = [1, 2, 3]
new_list = my_list1.copy()
print(new_list)
my_list1[0] = 99
print(my_list1)
print(new_list)
Exercise 22
Senza eseguire le seguenti istruzioni, indovinate se producono True o False.
x = 2; y = 2; z = 4;
x > z
x == y
(x < y) and (x > y)
(x < y) or (x > y)
(x <= y) and (x >= y)
True and ((x < z) or (x < y))
Solution to
Per verificare la soluzione, inserite (una per volta) le istruzioni precedenti in una cella di un Jupyter Notebook.