





















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 svolti con il for, while, file, dizionari, range, implemento, definizioni.
Tipologia: Esercizi
1 / 29
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!






















ht=int(input('inserisci altezza triangolo:')) for i in range(ht): print(''(i+1))
ht=int(input('inserisci altezza triangolo:')) for i in range(ht): print(' '(ht-i-1),end='') print(''*(i+1))
l=int(input('inserisci lato del quadrato:')) for i in range(l): if i==0 or i==l-1: print(''l) else: print(''+' '(l-2)+'*')
ht=int(input('inserisci altezza del triangolo:')) for i in range(ht): print(' '(ht-i-1)+''(2i+1)+' '*(ht-i-1)) #l'ultimo è opzionale perché sono spazi e non si vedono
ht=int(input('altezza totale albero:')) hb=int(input('altezza tronco:')) lb=int(input('lato tronco(dispari):')) for i in range(ht-hb): s=' '(ht-hb-i-1)+''(2i+1) print(s)
for j in range(hb): s=(' '((2(ht-hb)-1-lb)//2)+''lb+' '((2(ht-hb)-1-lb)//2)) print(s)
#altezza 7 in questo caso ------ i= ------ i= ------ i= ------ i= ------ i= ------ i= ------** i=
hs=int(input('inserisci altezza serpente:')) for i in range(hs): print(' 'i+''+' '(hs+1-2-i))
list(range(1,6,1)) #da 1 a 6 di passo 1 [1, 2, 3, 4, 5]
list(range(10,0,-1)) # 10 a 1 di passo -1 ovvero vado all'indietro [10,9,8,7,6,5,4,3,2,1]
somma= for i in range(1,101,1): somma=somma+i print(somma) print(100101/2) #n(n+1)/
n=int(input('quanti numeri?')) somma= for i in range(1,n+1,1): #n+1 perchè n+1 è escluso somma=somma+i print(somma) print(n*(n+1)/2)
Implementa
finito=False while not finito:
print(news)
il carattere devo restituire True s=input('inserisci una stringa:') c=input('inserisci il carattere da cercare c:')
trovato=False indice=- i= while not trovato and i<len(s): if c==s[i]: indice=i trovato=True i=i+
print('mio :',indice) print('python:',s.find(c))
def raddoppia (n): #n parametro formale #n è un input n=n* return n #n parametro attuale #il return è un'uscita(output)
'''def raddoppia (n): #n parametro formale #n è un input print(n*2) #questa ha effetti collaterali perchè stampa[l=raddoppia('casa')] ma dentro l non c'è niente. Quindi nella funzione ci va il return e non il print perchè ci deve restituire qualcosa'''
def isPari(n): return n%2==
def raddoppia (n,volte): return n2*(volte-1)
def r(start,stop,step): for i in range(start,stop,step): print(i)
def r(start,stop,step=1): #se metto step=2 andrà di due; se non metto niente va di uno for i in range(start,stop,step): print(i)
n=input('inserisci un intero:') while isInteger2(n): print(int(n)) n=input('inserisci un intero:')
def isReal(s): if s[0:1] in '+-': s=s[1:]
n=int(input('inserisci n:')) print(estrai(s,n)) continua=input('vuoi continuare? s/n:')
#estrai quindi che farà? ad esempio inserisco la stringa '012345679' inserisco #n=3 e quindi mi restituisce la stringa '0369'
def estrai (s,n,k): #k è il punto da cui devo partire risultato = '' for i in range(k,len(s)): if (i-k) % n == 0 : #i-k vuol dire che parte da 0 risultato += s[i] return risultato
continua= 's' while continua!= 'n': s= input('inserisci la stringa:') n= input('inserisci il numero n:') k= input('inserisci l indice iniziale:') print(estrai(s,n,k)) continua = input('vuoi continuare? s/n:')
#però così io devo mettere per forza k anche se voglio partire da 0 #allora come posso fare?
#dalla stringa s cera una nuova stringa con i caratteri #di indice k,k+n,k+2n,k+3n... #se k non è presente tra i parametri attuali vale 0
def estrai(s,n,k=0): risultato = '' for i in range(k,len(s)): if (i-k) % n ==0: risultato += s[i] return risultato
continua = 's' while continua != 'n': s= input('inserisci la stringa:') n= input('inserisci il numero n:') k= input('inserisci l indice iniziale:') print('estrai(s,n,k)',estrai(s,n,k)) print('estrai(s,n)', estrai(s,n)) #li scrivo tutti e due solo per vedere la differenza continua = input('vuoi continuare? s/n:')
Correzione esercizi
def creaListaCD(s): l=[] for c in s: if c not in l: l.append(c) # l=l+[c] questo però crea sempre una nuova lista che viene persa al ciclo successivo però è corretta
l.sort() #va fatta prima perchè sennò restituisce None return l
continua='s' while continua != 'n': s=input('inserisci la stringa:') print (creaListaCD(s)) continua = input('vuoi continuare? s/n:')
def A_Ex1(s,c): i=1 #perchè la stringa deve essere lunga almeno 2 caratteri while i <len(s): if s[i]==s[i-1]==c: #questo si fa solo in python; dovrebbe essere s[i]==s[i-1] and s[i]==c return True i=i+
return False
from libreriaV1 import *
Se faccio f. mi compaiono tutte le cose che posso fare:
f.close se non lo faccio il programma viene bloccato e quindi nessun altro lo può aprire. Quindi ci deve sempre stare.
f=open(‘Esempio.txt’,encoding=”UTF-8”) s=f.read() f.close() print(s) print(‘\n\n’) #Se lo eseguo dentro s ci sarà tutto il file
Questo è un esempio di un file di testo. Occupa quattro righe
Riga 4.
La terza riga non è vuota ma c’è un \n.
Quindi endoding=”UTF-8” serve per leggere ad esempio la è, cioè quei simboli “strani”.
s.count(‘a’) mi dice le a che ci sono nel file
‘un’ in s ci dice se è vero che c’è ‘un’ nel file
True
readlines() legge tutto il file e lo mette in una lista
l=f.readlines() mette una riga per ogni argomento (l[0]=prima riga..)
#scansione del file per elementi(righe)
F=open(‘Esempio.txt’, encoding= “UTF-8”)
i=
for elem in f: #elem è una riga
print(i,elem) i=i+
f.close()
Stamperà:
1 Questo è un esempio di un file di testo. 2 Occupa quattro righe 3
4 Riga 4.
def creaListaParole(file): f=open(file,encoding=”UTF-8”) s=f.read() sv=s.split() #ogni volta che trova uno spazio bianco e ogni volta che trova \n return sv lp=creaListaParole(‘Esempio.txt’)
print(‘lp=’,lp)
lp=[‘Quando’, ‘è’, ‘un’, ‘esempio’,….]
def creaListaParoleNoDoppioni (file): f=open(file,encoding=”UTF-8”) s=f.read() sv=s.split() ris= [ ] #lista vuota, inizializzo la lista for elem in sv: if elem not in in ris: ris:append(elem) ris.sort() #poi le metto in ordine alfabetico return ris lp=creaListaParoleNoDoppioni(‘Esempio.txt’)
print(lp)
def creaListaTuple(file):
f=open(file,encoding=”UTF-8”) sv= [ ] for elem in f: elem=elem.strip().split(‘,’) #con strip pulisco la riga(toglie gli spazi aggiuntivi, \n.. #con la virgola perché è il separatore che ho usato su excel print(elem) #serve solo per far capire cosa sta succedendo sv.append(elem)
Riga 4.
Lo vogliamo leggere e copiare da un’altra parte.
fin=open(‘Esempio.txt’, ‘r’, encoding=”UTF-8”) #file input
fout=open(‘Copia_Esempio.txt’, ‘w’, encoding=”UTF-8”) #se Copia.. esiste distrugge quello che c’è dentro e crea un nuovo file sennò lo crea e basta
for riga in fin: #riga prima assume Questo è..,poi Occupa.. ecc..
print(riga,end= ‘ ‘ ,file=fout) #non stampa sullo schermo ma sul file
#mettendo end= ‘ ‘ lo stampa esattamente così com’è
perché sennò mette troppi \n
fin.close()
fout.close()
fin=open(‘Esempio.txt’, ‘r’, encoding=”UTF-8”) #file input
fout=open(‘Copia_Esempio.txt’, ‘w’, encoding=”UTF-8”)
for riga in fin:
#stampo solo righe non vuote (in questo caso specifico) if len(riga.strip())>0: #riga.strip toglie il \n alla fine però non modifica la stringa è solo un controllo print(riga,end= ‘ ‘,file=fout)
fin.close()
fout.close()
def filtra(file_in, file_out, parola):
fin=open(file_in, ‘r’, encoding=”UTF-8”)
fout=open(file_out, ‘w’, encoding=”UTF-8”)
for riga in fin: #stampo solo righe che contengono ‘parola’ if parola in riga: print(riga,end= ‘ ‘,file=fout)
fin.close()
fout.close()
def aggiungiParoleFile(file_out, s):
fout=open(file_out, ‘a’, encoding=”UTF-8”) #appendi
parole=s.split()
for parola in parole:
print(parola,file=fout)
fout.close()
aggiungiParoleFile(‘parole.txt’, ‘nel mezzo’)
aggiungiParoleFile(‘parole.txt’, ‘pippo pluto’)
aggiungiParoleFile(‘parole.txt’, s)
aggiungiParoleFile(‘parole.txt’, ‘pippo pluto’)
if min(riga)==max(riga): pareggiate=pareggiate+ elif riga[giocatore]==min(riga): ultimo=ultimo+ elif riga[giocatore]==max(riga): primo=primo+ riga=fin.readline().strip().split(',')
fin.close()
return nome,partite,primo,ultimo,pareggiate
print('Nome Partite primo ultimo Pareggiate')
print(statistichePartire('Partite3.csv',0)
print(statistichePartire('Partite3.csv',1)
print(statistichePartire('Partite3.csv',2)
nome,partite,primo,ultimo,pareggiate=statistichePartire('Partite3.csc')
fin=open(file_in,'r',encodinf='UTF-8') nomi=fin.readline().strip().split(',') #fin.readline legge una riga vincitore=[] for i in range(len(nomi)): vincite.append(0) #[0,0,0]
riga=fin.readline().strip().split(',') while len(riga[0]) > 0: for i in range(len(riga)): riga[i]=int(riga[i]): #riga ora è una lista di interi if min(riga) != max(riga): for i in range(len(nomi)):
if riga[i]==max(riga): vincite[i]= vincite[i] + riga=fin.readline().strip().split(',') #leggo riga successiva fin.close() vincitori='' for i in range(len(nomi)): if vincite[i]==max(vincite): vincitori=vincitori+nomi[i]+ ' ' return vincitori
#restituisce il nome del giocatore che ha vinto più numero partite vinte
print(vincitore('Partire3.csv'))
fin=open(file_in,'r',encoding='UTF-8') somma= n= riga=fin.readline().strip() #non faccio split perchè non ci sono virgole #visto che c'è solo un elemento per riga while len(riga) > 0 : somma=somma+float(riga) #float converte la riga in un reale n=n+ riga=fin.readline().strip() fin.close() return somma/n
print(media('Reali.txt')
c=fin.read(1) #legge un singolo carattere while c!='': #c diverso da niente. il carattere può essere vuoto solo quando arrivo alla fine print(c) c=fin.read(1) #legge il prossimo carattere(in questo caso 1 alla volta) stampaCarattere('argomenti.txt')
def fCaratteri(file_in): fin=open(file_in,'r',encoding='UTF-8') f=[] for i in range(ord('z')-ord('a')+1): # f.append(0) #[0,0..] c=fin.read(1) #legge il primo carattere while c!='': if 'a'<=c.lower()<='z' f[ord(c.lower())-ord('a')]+=1 #tolgo ord('a') così parto da 0 visto che ord('a')= c=fin.read(1) return f
print(fCaratteri('argomenti.txt')
f=fCaratteri('IMalavoglia.txt') for i in range(len(f)): print(chr(ord('a')+i),f[i])
Assomiglia molto ad una lista. La differenza è che io accedo ad un elemento del dizionario non con un indice numerico ma con una chiave.
Dizionario è un insieme di oggetti non ordinati.
d={} #per mettere i dizionari d[5]='casa' d {5: 'casa'} d['mario']= d {5: 'casa', 'mario': 55} d['mario'] 55 d {5: 'casa', 'mario': 55} len(d) 2 for elem in d: #stampa la chiave print(elem)
5 mario
for elem in d: print(elem,d[elem]) 5 casa mario 55 d.keys() dict_keys([5, 'mario']) d.values() dict_values(['casa', 55]) 5 in d True 6 in d False