Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Esercizi Svolti in Python: Un Approfondimento Pratico, Esercizi di Fondamenti di informatica

Esercizi Python svolti con testo. Argomenti principali: if, else, funzioni, cicli for, cicli while, liste e matrici

Tipologia: Esercizi

2022/2023

In vendita dal 10/11/2023

Alessandraa_03
Alessandraa_03 🇮🇹

1 documento

1 / 18

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
ESERCIZI PYTHON SVOLTI CON TESTO
1 Equazione di secondo grado
Scrivere un programma che calcoli e restituisca la soluzione più
grande, tra quelle dell’equazione di secondo grado Ax2 + Bx + C =
0. Se l’equazione non ha soluzione il programma deve
stampare la stringa “nessuna soluzione”.
def eqsecondogrado(A, B, C):
delta = (B**2)-4*A*C
if delta < 0:
print("Nessuna soluzione")
else:
if A == 0:
soluzione = -C/B
print(soluzione)
else:
soluzione1 = (-B-(delta)**0.5)/2*A
soluzione2 = (-B+(delta)**0.5)/2*A
if soluzione1 > soluzione2:
print(soluzione1)
else:
print(soluzione2)
2 Conversione in ore, minuti e secondi.
Scrivere un programma che data una quantità di secondi, stampi
l’equivalente in formato hh:mm:ss.
def tempo(secondi):
hh = (secondi//3600)
mm = (secondi%3600//60)
ss = (secondi%3600%60)
if hh< 10:
hh1 = "0"+str(hh)
else:
hh1 = str(hh)
if mm< 10:
mm1 = "0"+ str(mm)
else:
mm1 = str(mm)
if ss< 10:
ss1 = "0"+ str(ss)
else:
ss1 = str(ss)
return(hh1+":"+mm1+":"+ss1)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Anteprima parziale del testo

Scarica Esercizi Svolti in Python: Un Approfondimento Pratico e più Esercizi in PDF di Fondamenti di informatica solo su Docsity!

ESERCIZI PYTHON SVOLTI CON TESTO

1 Equazione di secondo grado

Scrivere un programma che calcoli e restituisca la soluzione più grande, tra quelle dell’equazione di secondo grado Ax^2 + Bx + C =

  1. Se l’equazione non ha soluzione il programma deve stampare la stringa “nessuna soluzione”. def eqsecondogrado (A, B, C): delta = (B2)-4AC if delta < 0: print("Nessuna soluzione") else : if A == 0: soluzione = -C/B print(soluzione) else : soluzione1 = (-B-(delta)0.5)/2A soluzione2 = (-B+(delta)0.5)/2A if soluzione1 > soluzione2: print(soluzione1) else : print(soluzione2)

2 Conversione in ore, minuti e secondi.

Scrivere un programma che data una quantità di secondi, stampi l’equivalente in formato hh:mm:ss. def tempo (secondi): hh = (secondi//3600) mm = (secondi%3600//60) ss = (secondi%3600%60) if hh< 10: hh1 = "0"+str(hh) else : hh1 = str(hh) if mm< 10: mm1 = "0"+ str(mm) else : mm1 = str(mm) if ss< 10: ss1 = "0"+ str(ss) else : ss1 = str(ss) return (hh1+":"+mm1+":"+ss1)

3 Tavola pitagorica

Scrivere una funzione tavolapitagorica(N) che stampi una griglia di numeri, dove alla riga 𝑟 e alla colonna 𝑐 della griglia ci sia il valore 𝑟 × 𝑐. Tra ogni colonna e la precedente ci devono essere almeno due spazi. def allinea (v): testo= str(v) pad = 4-len(testo) if pad>0: testo = " "pad + testo return testo def tavolapitagorica (N): r = 1 while r<= N: c = 1 while c<= N: print(allinea(rc), end=" ") c= c+ r = r + 1 print()

4 Conteggio delle parole

Scrivere una funzione conteggioparole(testo) che restituisca il numero di parole presenti nella stringa. def alphanum (char): return char.isalpha() or char.isdigit() def conteggioparole (testo): contatore = 0 if len(testo) == 0: return 0 if alphanum(testo[0]): contatore += for i in range(len(testo)-1): if not (alphanum(testo[i])) and alphanum(testo[i+1]): contatore += return contatore

5 Conteggio delle vocali

Scrivere una funzione prodottoscalare(a, b) che si aspetti come argomenti due liste non vuote a, b della stessa lunghezza, in cui ciascun elemento è un numero (int o float); restituisca il prodotto scalare delle liste. def prodottoscalare (a, b): l = 0 if type(a)!= list or type(b)!= list: raise TypeError if len(a)== 0 or len(b)== 0 or len(a)!=len(b): raise ValueError for i in range(len(a)): if type(a[i]) == str or type(b[i])== str: raise TypeError else : d = a[i]*b[i] l+= d return l

9 Media aritmetica

Scrivere una funzione media(L) che, si aspetti come argomento una lista L, in cui ciascun elemento è un numero (int o float); restituisca la media aritmetica dei numeri contenuti nella lista L. def media (L): acc = 0 if type(L)!= list: raise TypeError if len(L)== 0: raise ValueError for x in L: if not isinstance(x,(int,float)): raise TypeError acc += x M = acc/len(L) return M

10 Separa elementi in base alla media

Scrivere una funzione separaelementi(valori) che si aspetti come argomento una lista, in cui ciascun elemento è un numero; restituisca due liste. La prima lista deve contenere tutti i valori che sono maggiori della media degli elementi, mentre la seconda lista deve contenere tutti gli elementi che sono minori o uguali alla media degli elementi. Gli elementi devono avere lo stesso ordine che avevano nella lista originale. def media (valori): somma = 0 for x in valori: somma += x return somma/len(valori) def separaelementi (valori): if type(valori)!= list: raise TypeError if len(valori)==0: raise ValueError M = media(valori) lista1, lista2 = [], [] for x in valori: if x < M: lista1.append(x) else : lista2.append(x) return lista1, lista

11 Unione

Scrivere una funzione unione(a, b) che si aspetti come argomenti due liste a, b; restituisca una lista che rappresenti l’unione tra le due liste a e b. def unione (a,b): if type(a)!= list or type(b)!= list: raise TypeError L = a + b s = [] for i in L: if i not in s: s.append(i) return s

14 Massimi locali

Scrivere una funzione massimilocali(L) che si aspetti come argomento una lista L; restituisca una lista contenente i massimi locali presenti in sequenza. def massimilocali (L): if type(L)!= list: raise TypeError massimi = [] for i in range(1, len(L)-1): if L[i]== str: raise TypeError if L[i-1]<L[i] and L[i]>L[i+1]: massimi.append(L[i]) return massimi

15 Posizione del minimo

Scrivere una funzione minimo(valori, start=0) che si aspetti come argomento una lista valori; restituisca la posizione del valore minimo tra gli elementi della lista che compaiono a partire dalla posizione start. def minimo (valori, start = 0): if not isinstance(valori, list): raise TypeError if len(valori) == 0: raise ValueError if start < 0 or start >= len(valori): raise ValueError for x in valori: if not isinstance(x, (int, float)): raise TypeError pos_min = start for i in range(start, len(valori)): if valori[i] < valori[pos_min]: pos_min = i return pos_min

16 Stampare una matrice

Scrivere una funzione stampa_mat(m) che riceva come parametro una matrice m; stampi la matrice m andando a capo alla fine di ciascuna riga. def stampa_mat (m): if not isinstance(m, list): raise TypeError for x in range(len(m)): if not isinstance(m[x], list): raise TypeError for k in range(len(m[x])): print(m[x][k], end =' ') print(' ')

17 Somme per colonna di una matrice numerica

Scrivere una funzione somme_per_colonna_mat(m) che riceva come parametro una matrice m; restituisca una lista in cui l’elemento di posto i è la somma degli elementi della colonna i-esima. La lunghezza di tale lista è uguale al numero di colonne della matrice. def somme_per_colonna_mat (m): if not isinstance(m, list): raise TypeError for r in m: if not isinstance(r, list): raise TypeError if len(m)> 0: n_col = len(m[0]) for r in m: if len(r)!= n_col: raise ValueError for r in m: for x in r: if not isinstance(x, (int, float)): raise TypeError if len(m)== 0: return [] lista_somme = [] for ic in range(len(m[0])): somma = 0 for ir in range(len(m)): somma += m[ir][ic] lista_somme.append(somma) return lista_somme

20 Minimo degli elementi di una matrice numerica

Scrivere una funzione min_mat(m) che: riceva come parametro una matrice m; restituisca il valore dell’elemento minimo nella matrice. def min_mat (m): if not isinstance(m, list): raise TypeError if len(m) == 0 or len(m[0]) == 0: raise ValueError for r in m: if not isinstance(r, list): raise TypeError for r in m: for x in r: if not isinstance(x, (int, float)): raise TypeError minimo = m[0][0] for r in m: for x in r: if x < minimo: minimo = x return minimo

21 Posizione della riga con somma massima

Scrivere una funzione pos_maxriga_mat(m) che: riceva come parametro una matrice m; restituisca la posizione della riga che ha massima somma. def pos_maxriga_mat (m): if not isinstance(m, list): raise TypeError for r in m: if not isinstance(r, list): raise TypeError for r in m: for x in r: if not isinstance(x, (int, float)): raise TypeError somme = [] for i in m: sommariga = sum(i) somme.append(sommariga) massimariga = max(somme)

indicemax = somme.index(massimariga) return indicemax

22 Posizione del massimo elemento di una matrice numerica

Scrivere una funzione posmax_mat(m) che: riceva come parametro una matrice m; restituisca una coppia di interi che siano l’indice di riga e di colonna in cui compare il massimo elemento della matrice. In caso di più massimi, restituire la posizione del primo di essi. def posmax_mat (m): if not isinstance(m, list): raise TypeError if len(m) == 0 or len(m[0]) == 0: raise ValueError for r in m: if not isinstance(r, list): raise TypeError for r in m: for x in r: if not isinstance(x, (int, float)): raise TypeError r_max, c_max = 0, 0 massimo = m[r_max][c_max] for r in range(len(m)): for c in range(len(m[r])): if m[r][c]> massimo: r_max, c_max = r, c massimo = m[r][c] return r_max, c_max

23 Matrice trasposta

Scrivere una funzione trasposta_mat(m) che: si aspetti come argomento matrice m; crei e restituisca la matrice trasposta di m. def creamatrice (r,c,fillvalue=0): M=[] for i in range(r): M.append( [fillvalue]*c) return M def matrixsize (m): return len(m),len(m[0]) def trasposta_mat (m): r,c = matrixsize(m) T = creamatrice(c,r) for i in range(c):

mm.append(somma) return mm

26 Posizione della massima media mobile

Scrivere una funzione posmax_medie_mobili(seq, k) che: si aspetti come argomenti una lista di numeri seq e un numero k; restituisca la posizione della massima media mobile di ordine k della sequenza seq. def posmax_medie_mobili (seq,k): if not isinstance(seq, list): raise TypeError for x in seq: if not isinstance(x, (int, float)): raise TypeError if len(seq) == 0: raise ValueError if not isinstance(k, int): raise TypeError if k <= 0 or k > len(seq): raise ValueError mm = [] for i in range(len(seq)-k+1): somma = 0 for x in seq[i:i+k]: somma += x somma = somma/k mm.append(somma) massimo = max(mm) posizione = massimo.index(i) return posizione

27 Sostituzione dei caratteri non alfabetici

Scrivere una funzione rimuovi_nonalfabetici(frase) che data una stringa restituisce una stringa di caratteri. La stringa restituita contiene la stessa sequenza, ma ciascun carattere non alfabetico deve essere sostituito da uno spazio. def rimuovi_nonalfabetici (frase): if not isinstance(frase, str): raise TypeError risultato = "" for c in frase: if c.isalpha(): risultato = risultato + c else : risultato = risultato + " "

return risultato

28 Conversione in minuscolo

Scrivere una funzione minuscolo(frase) che, che data una stringa di caratteri restituisce una stringa nella quale per ciascun carattere maiuscolo viene inserito il corrispondente minuscolo. def minuscolo (frase): if type(frase)!= str: raise TypeError frasenuova = frase.lower() return frasenuova

29 Convertire una stringa in una lista di parole

Scrivere una funzione spezza_parole(frase) che data una stringa restituisce una lista formata da un elemento per ciascuna parola nella stringa. def spezza_parole (frase): if not isinstance(frase, str): raise TypeError risultato = frase.split() return risultato

30 Ordinare una lista di parole

Scrivere una funzione parole_ordinate(lista_parole) che data una lista di parole ne restituisce una copia ordinata. def parole_ordinate (lista_parole): if not isinstance(lista_parole, list): raise TypeError risultato = [] for x in lista_parole: risultato.append(x) risultato.sort() return risultato

31 Costruire una lista eliminando i duplicati

Scrivere una funzione elimina_duplicati(lista) che data una lista ordinata restituisce un’altra lista che contiene gli stessi elementi, ma senza duplicati. def elimina_duplicati (lista_parole):

35 Ordinamento discendente

Scrivere una funzione seq_ordinata(L) che data una sequenza L come argomento, verifichi che L sia ordinata in modo discendente. Se L è ordinata in modo discendente allora la funzione deve restituire True, e deve restituire False in caso contrario. def seq_ordinata (L): n = [] for i in L: n.append(i) n.sort() n.reverse() if n==L: return True else : return False

36 Coppia di distanza minima

Scrivere una funzione distanza_minima(L) che riceva una lista L contentente solo numeri, e che restituisca una lista contenente le due posizioni [i,j] dove: i è minore di j; L[i] e L[j] sono i due elementi della lista la cui differenza in valore assoluto è minima rispetto ad ogni altra coppia di elementi in L. def distanza_minima (L): S = sorted(zip(L, range(len(L)))) mind = abs(S[0][0] - S[1][0]) pos = [S[0][1],S[1][1]] for i in range(2, len(L)): d = abs(S[i-1][0]-S[i][0]) if d < mind: mind = d pos = (S[i-1][1], S[i][1]) return sorted(pos)

37 Bordo della Matrice

Scrivere una funzione bordo_zero_mat(M) che prenda come argomento una matrice rettangolare di dimensioni r × c con r ≥ 1 e c ≥ 1 , che restituisca True se il bordo della matrice è costituito esclusivamente da zeri, e che restituisca False altrimenti. def bordo_zero_mat (M): R, C = len(M), len(M[0]) for i in range(R): if M[i][0]!= 0 or M[i][-1]!= 0: return False for j in range(C): if M[0][j]!= 0 or M[-1][j]!=0: return False return True

38 Coppie di righe uguali

Scrivere una funzione righe_uguali_mat(M) che prenda come argomento una matrice rettangolare di dimensioni r × c con r ≥ 1 e c ≥ 1 , e che restituisca un elenco di tutte le coppie di posizioni in cui si presentino righe identiche nella matrice. Il risultato deve essere: una lista contenente liste di lunghezza due; ognuna di queste liste di lunghezza due è una coppia di indici [i,j] tali che le righe i e j della matrice M siano tra loro uguali; la lista deve elencare ogni coppia di righe uguali esattamente una volta; ogni coppia di indici [i,j] deve essere ordinata (ovvero i<j); la lista di coppie deve essere ordinata. def righe_uguali_mat (M): R = len(M) L = [] for i in range(R-1): for j in range(i+1,R): if M[i]==M[j]: L.append([i, j]) return L