










Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Esercizi Python svolti con testo. Argomenti principali: if, else, funzioni, cicli for, cicli while, liste e matrici
Tipologia: Esercizi
1 / 18
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!











Scrivere un programma che calcoli e restituisca la soluzione più grande, tra quelle dell’equazione di secondo grado Ax^2 + Bx + C =
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)
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()
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
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
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
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
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
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
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
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(' ')
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
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
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
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
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
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
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
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
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
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
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):
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
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)
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
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