Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global npagine
- npagine = input('Pagine> ') #Chiede il numero di pagine
- global nalunni
- nalunni = input('Alunni> ') #Chiede il numero di alunni
- gnuplot = True #Se settato su True, restituisce un output interpretabile da gnuplot o da altri programmi del tipo "alunno probabilita'"
- verbose = False #Se settato su True, elenca anche le pagine per ogni alunno
- def somma(num): #Restituisce la sommad delle cifre del numero "num"
- tot = 0 #Variabile temporanea per la somma delle cifre
- for a in str(num): #Prende singolarmente tutte le cifre del numero "num"
- tot = tot + int(a) #Somma la cifra corrente al totale
- return tot #Restituisce il totale
- def extr(pag): #La funzione restituisce il numero dell'alunno estratto a partire dalla pagina "pag"
- if pag <= nalunni: #Se la pagina estratta e' un numero compreso fra 1 e il numero degli alunni restituisce la pagina stessa. Se apro il libro sulla pagina "12" e gli alunni sono 23, verra' estratto il 12 (E non il 3(=1+2))
- return pag #Restituisce la pagina stessa
- else: #Se il numero della pagina estratta non e' assegnato a nessun alunno, restituisce la somma delle cifre
- s = somma(pag) #Somma delle pagine restituita dalla funzione definita sopra
- while (s>nalunni): #Somma nuovamente le cifre se il numero ottenuto e' superiore al numero di alunni. Se in una classe di 12 alunni viene estratto il numero 49 viene restituito 4 (4+9=13; 13>12; 1+3=4)
- s = somma(s)
- return s #Restituisce la somma delle cifre
- alunni = [] #Array che conterra', per ogni alunno indentificato dall'indice, l'elenco delle pagine con cui viene estratto. Ad esempio alunni[4] contiene la lista delle pagine che estraggono l'alunno numero 5 (Ricordo che gli alunni sono numerati a partire da 1, mentre l'array inizia con indice 0. Quindi l'alunno n ha la propria lista all'indice n-1)
- for t in range(0,nalunni):
- alunni.append([])
- for b in range(1,npagine+1): #Prende in esame ogni pagina
- alunni[extr(b)-1].append(b) #Aggiunge all'indice che identifica l'alunno estratto dalla pagina "pag" il numero stesso della pagina
- if (gnuplot == False): #Se viene eseguito in modalita' "Umana":
- for c in range(1,nalunni+1): #Prende in esame ogni alunno
- print 'L\'alunno',c,'viene estratto da',len(alunni[c-1]),'pagine (',float(len(alunni[c-1]))/float(npagine)*100,'% )', #Stampa a schermo le informazioni per ogni alunno
- if (verbose):
- print '(',alunni[c-1],')' #Volendo stampa anche tutte le pagine di ogni alunno
- else:
- print "\n",
- else: #Output compatto per l'importazione
- for c in range(1,nalunni+1):
- print str(c)+' '+str(float(len(alunni[c-1]))/float(npagine))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement