Advertisement
alespace

esame.py

Feb 19th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.39 KB | None | 0 0
  1. import csv
  2.  
  3.  
  4. def crivello(number):
  5.     # genero un (setaccio) di tipo set a partire da 2
  6.     svn = { x for x in range(2, number)}
  7.     for num in range(2, number//2):
  8.     # number//2 ritorna la parte intera della divisione
  9.         # per ogni numero a partire da 2 fino alla metà di number
  10.         if num in svn:
  11.             # elimino i multipli di num dal setaccio
  12.             svn -= { x for x in range(2*num, number, num)}
  13.     # ritorno una lista di numeri primi
  14.     return list(svn)
  15.  
  16.  
  17. def create_csv_prime_number(prime_number):
  18.     # preparo il file da lavorare
  19.     f_out = open('tabella_numeri_new.csv', 'w')
  20.     # creo un writer per scrivere il csv
  21.     writer = csv.writer(f_out, delimiter=';')
  22.     with open('tabella_numeri.csv', 'r') as f_in:
  23.         for row in csv.reader(f_in, delimiter=';'):
  24.             # leggo le rige di f_in
  25.             row_to_write = []
  26.             for num in row:
  27.                 # per ogni numero presente nella riga verifico
  28.                 # la presenza nella lista dei numeri primi
  29.                 # se presente li preparo per inserirli in f_out
  30.                 if int(num) in prime_number:
  31.                     row_to_write.append(num)
  32.             # verifico la lunghezza della riga da inserire in f_out
  33.             if len(row_to_write) < 10:
  34.                 count = 10 - len(row_to_write)
  35.                 while count > 0:
  36.                     # inserisco gli zeri per arrivare alla lunghezza di 10
  37.                     row_to_write.append(str(0))
  38.                     count -= 1
  39.             # scrivo il file
  40.             writer.writerow(row_to_write)
  41.     # f_in si chiude da solo quando esce dal blocco with
  42.     # chiudo il file f_out.
  43.     f_out.close()
  44.  
  45.  
  46. def create_csv_inverse():
  47.     # preparo i file da lavorare
  48.     f_out = open('tabella_numeri_inversa.csv', 'w')
  49.     # creo un writer per scrivere il csv
  50.     writer = csv.writer(f_out, delimiter=';')
  51.     with open('tabella_numeri_new.csv', 'r') as f_in:
  52.         for row in csv.reader(f_in, delimiter=';'):
  53.             # scrivo la riga inversa
  54.             writer.writerow(row[::-1])
  55.     # f_in si chiude da solo quando esce dal blocco with
  56.     # chiudo il file f_out.
  57.     f_out.close()
  58.  
  59.  
  60.  
  61. if __name__ == '__main__':
  62.     # invoco la funzione con numero finale 100 (max numero presente nel csv)
  63.     prime_number = crivello(100)
  64.     create_csv_prime_number(prime_number)
  65.     create_csv_inverse()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement