ESERCIZI PYTHON – BASE
0.
#Calcolare quadrato e cubo di un numero intero fornito in input
print("Quadrato e cubo di un numero")
numero = int(input("Numero : "))
quadrato=numero*numero;
cubo=quadrato*numero;
print("Quadrato di "+str(numero)+" = " + str(quadrato))
print("Cubo di "+str(numero)+" = " + str(cubo))
1.
Scrivi un programma che chieda due numeri all'utente tramite la
funzione input e mostri il più grande tra i due utilizzando la funzione print.
Per quanto Python disponga di una funzione max(), siete invitati ad utilizzare le
istruzioni istruzioni if, elif ed else per la scrittura dell'algoritmo. Soluzione
a = input("Inserisci il primo numero: ")
b = input("Inserisci il secondo numero: ")
if a == b:
print("I numeri sono identici")
elif a > b:
print("Il numero più grande tra i due è " + str(a))
else:
print("Il numero più grande tra i due è " + str(b))
2.
Scrivi un programma che chieda tre numeri a, b, c all'utente e mostri il più
grande tra loro. Soluzione
a = input("Inserisci il primo numero: ")
b = input("Inserisci il secondo numero: ")
c = input("Inserisci il terzo numero: ")
if a >= b and a >= c:
print(a)
elif b >= a and b >= c:
print(b)
elif c >= a and c >= b:
print(c)
3.
Scrivi un programma che, data una lista di numeri, fornisca in output il
maggiore tra tutti. Soluzione
lista_numeri = [42, 9, 23, 11, 17, 56, 3]
numero_maggiore = lista_numeri[0]
for numero in lista_numeri:
if numero > numero_maggiore:
numero_maggiore = numero
print("Il numero maggiore tra tutti è:", numero_maggiore)
4.
Scrivi un semplice programma che, data una lista di numeri, sommi tra loro
tutti gli elementi.
Suggerimento: anche se esiste la funzione sum() per risolvere l'esercizio potresti
usare il ciclo for. Soluzione
lista = [3, 6, 100, 23, 42]
risultato = 0
for numero in lista:
risultato += numero
print("Il risultato della somma è... " + str(risultato))
5.
Scrivi un programma "moltiplicatore" che, data una lista di numeri, moltiplichi
tra loro tutti gli elementi. Soluzione
lista = [7, 66, 100, 457, 472]
risultato = 1
for numero in lista:
if numero != 0:
risultato *= numero
print("Il risultato della moltiplicazione tra tutti gli elementi della
lista è... " + str(risultato))
6.
Scrivi una semplice funzione che, data una lista di numeri, fornisca in output
un istogramma basato su questi numeri, usando asterischi per disegnarlo.
Data ad esempio la lista [3, 7, 9, 5], la funzione dovrà produrre questa sequenza:
***
*******
*********
***** Soluzione
def istogramma(lista):
for numero in lista:
print("*" * numero)
7.
Scrivi una funzione che restituisca la lunghezza di una stringa o lista passata
come parametro. In sostanza, seppur presente, provate a scrivere la nostra
versione della funzione len! Soluzione
def my_len(lst_or_str):
length = 0
for unit in lst_or_str:
length += 1
return length
8.
Scrivi una funzione che data in ingresso una lista A contenente n parole,
restituisca in output una lista B di interi che rappresentano la lunghezza delle
parole contenute in A.
Questo esercizio può essere risolto anche usando una list
comprehension. Soluzione
# due possibili soluzioni per l'esercizio proposto
def char_counter(lista_a):
lista_b = []
for parola in lista_a:
lista_b.append(len(parola))
return lista_b
def char_counter_pro(lista_a):
return [len(parola) for parola in lista_a]
9.
Scrivi una funzione che, data una stringa come parametro, restituisca
un dizionario rappresentante la "frequenza di comparsa" di ciascun carattere
componente la stringa.
Per fare un esempio, data una stringa "ababcc", otterremo in risultato {"a": 2, "b":
2, "c": 2} Soluzione
def char_freq(str):
mappa = {}
for carattere in str:
if carattere in mappa:
mappa[carattere] += 1
else:
mappa[carattere] = 1
return mappa
10.
Scrivi una semplice funzione che converta un dato numero di giorni, ore e
minuti, passati dall'utente tramite funzione input, in secondi. Soluzione
def calcola_secondi():
print("Questa funzione converte un dato numero di Giorni, Ore e
Minuti in Secondi.")
da_giorni = int(input("Inserisci il numero di giorni: ")) * 24 * 3600
da_ore = int(input("Inserisci il numero di ore: ")) * 3600
da_minuti = int(input("Inserisci il numero di minuti: ")) * 60
totale = da_giorni + da_ore + da_minuti
print(totale)
11.
Scrivi una funzione che, dato in ingresso un valore espresso in metri, mandi in
print l'equivalente in miglia terrestri, iarde, piedi e pollici. Come risolverai questo
esercizio? Soluzione
def americana(metri):
conversions = dict()
conversions["miglia"] = metri / 1609.344
conversions["piedi"] = metri * 3.280840
conversions["pollici"] = metri * 39.37008
conversions["iarde"] = metri * 1.093613
print(f"{metri} metri corrispondono a:")
for key, value in [Link]():
print(f"{key}: {value}")
12.
Scrivi una funzione che, a scelta dell'utente, calcoli l'area di:
• un cerchio
• un quadrato
• un rettangolo
• un triangolo
Sentitevi liberi di estendere le potenzialità della funzione quanto meglio
credete! Soluzione
def geometra():
print("""
Benvenuti alla funzione Geometra!
In fase di selezione, a ciascun possibile calcolo corrisponde un
valore numerico:
- Area Quadrato: 1
- Area Rettangolo: 2
- Area Triangolo: 3
- Area Cerchio: 4
""")
print('Dunque. Di quale figura geometrica desideri calcolare
l\'area?')
scelta = int(input(">>> "))
if scelta == 1:
print("Hai scelto: Area Quadrato")
lato = float(input('Inserisci il valore del lato del quadrato '))
print(f"L'Area del Quadrato, avente lato {lato} è: {lato *
lato}")
elif scelta == 2:
print("Hai scelto: Area Rettangolo")
base = float(input('Inserisci il valore della base '))
altezza = float(input('Inserisci il valore dell´altezza '))
print(f"L'Area del Rettangolo, avente base {base} e altezza
{altezza} è: {base * altezza}")
elif scelta == 3:
print("Hai scelto: Area Triangolo")
base = float(input('Inserisci il valore della base '))
altezza = float(input('Inserisci il valore dell´altezza '))
print(f"L'Area del Triangolo, avente base {base} e altezza
{altezza} è: {(base * altezza) / 2}")
elif scelta == 4:
print("Hai scelto: Area Cerchio")
r = float(input('Inserisci il valore del raggio '))
print(f"L'Area del Cerchio, avente raggio {r} è: {(r * r) *
3.14}")
else:
print ('Nessun calcolo disponibile per la scelta effettuata!')
13.
Scrivi una funzione ricorsiva che calcola il fattoriale di un numero dato.
def fact(n):
prod=1
for i in range(1,n+1):
prod *= i
return prod
def fattoriale(n):
if n == 1:
return n
else:
result = n * fattoriale(n-1)
return result
14.
Nella Successione di Fibonacci, ciascun numero è la somma dei due numeri che
lo precedono, ad esempio:
1, 1, 2, 3, 5, 8, 13 (...)
Scrivi una funzione ricorsiva che restituisce in output i numeri della successione
di Fibonacci, entro una soglia specifica impostata dall'utente.
def fibo(n):
... a,b=0,1
... for i in range(n):
... print(a, end=' ')
... a,b=b,a+b
Soluzione
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
limite = int(input("Inserisci il numero di valori della serie che
desideri vedere: "))
for num in range(1, limite+1):
print(fibonacci(num))
15.
# Generare 10000 numeri interi random compresi tra 0 e 1000000
# stampare il numero generato più grande,
# il numero generato più piccolo e la media dei numeri generati
import random
# Genero una lista di n numeri interi random compresi tra n1 e n2
n = 10000
n1 = 0
n2 = 1000000
nmax=n1
nmin=n2
somma=0
for i in range(n):
numerogenerato=[Link](n1, n2)
if numerogenerato>nmax:
nmax=numerogenerato
if numerogenerato<nmin:
nmin=numerogenerato
somma+=numerogenerato
print("Numero generato più grande = "+str(nmax))
print("Numero generato più piccolo = "+str(nmin))
print("Media dei numeri generati = "+str(round(somma/n,2)))
Source Code: Matrix Multiplication
1. Using Nested Loop
def multiply_matrix(A,B):
rows = len(A)
cols = len(B[0])
if len(A[0]) == len(B):
C = [Link]((rows,cols),dtype = int)
for row in range(rows):
for col in range(cols):
for elt in range(len(B)):
C[row][col] += A[row][ elt] * B[let][ col]
return C
else:
return "Sorry, cannot multiply A and B."
2. Using list comprehension
result = [[sum(a * b for a, b in zip(A_row, B_col))
for B_col in zip(*B)]
for A_row in A]
for r in result:
print(r)