Advertisement
tpaper

Interr.py

Oct 30th, 2012
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.63 KB | None | 0 0
  1. global npagine
  2. npagine = input('Pagine> ') #Chiede il numero di pagine
  3. global nalunni
  4. nalunni = input('Alunni> ') #Chiede il numero di alunni
  5.  
  6. gnuplot = True #Se settato su True, restituisce un output interpretabile da gnuplot o da altri programmi del tipo "alunno probabilita'"
  7. verbose = False #Se settato su True, elenca anche le pagine per ogni alunno
  8.  
  9. def somma(num): #Restituisce la sommad delle cifre del numero "num"
  10.   tot = 0 #Variabile temporanea per la somma delle cifre
  11.   for a in str(num): #Prende singolarmente tutte le cifre del numero "num"
  12.     tot = tot + int(a) #Somma la cifra corrente al totale
  13.   return tot #Restituisce il totale
  14.  
  15. def extr(pag): #La funzione restituisce il numero dell'alunno estratto a partire dalla pagina "pag"
  16.   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))
  17.     return pag #Restituisce la pagina stessa
  18.   else: #Se il numero della pagina estratta non e' assegnato a nessun alunno, restituisce la somma delle cifre
  19.     s = somma(pag) #Somma delle pagine restituita dalla funzione definita sopra
  20.     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)
  21.       s = somma(s)
  22.     return s #Restituisce la somma delle cifre
  23.  
  24. 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)
  25. for t in range(0,nalunni):
  26.   alunni.append([])
  27.  
  28. for b in range(1,npagine+1): #Prende in esame ogni pagina
  29.   alunni[extr(b)-1].append(b) #Aggiunge all'indice che identifica l'alunno estratto dalla pagina "pag" il numero stesso della pagina
  30.  
  31. if (gnuplot == False): #Se viene eseguito in modalita' "Umana":
  32.   for c in range(1,nalunni+1): #Prende in esame ogni alunno
  33.     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
  34.     if (verbose):
  35.       print '(',alunni[c-1],')' #Volendo stampa anche tutte le pagine di ogni alunno
  36.     else:
  37.       print "\n",
  38. else: #Output compatto per l'importazione
  39.     for c in range(1,nalunni+1):
  40.       print str(c)+' '+str(float(len(alunni[c-1]))/float(npagine))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement