Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- def crivello(number):
- # genero un (setaccio) di tipo set a partire da 2
- svn = { x for x in range(2, number)}
- for num in range(2, number//2):
- # number//2 ritorna la parte intera della divisione
- # per ogni numero a partire da 2 fino alla metà di number
- if num in svn:
- # elimino i multipli di num dal setaccio
- svn -= { x for x in range(2*num, number, num)}
- # ritorno una lista di numeri primi
- return list(svn)
- def create_csv_prime_number(prime_number):
- # preparo il file da lavorare
- f_out = open('tabella_numeri_new.csv', 'w')
- # creo un writer per scrivere il csv
- writer = csv.writer(f_out, delimiter=';')
- with open('tabella_numeri.csv', 'r') as f_in:
- for row in csv.reader(f_in, delimiter=';'):
- # leggo le rige di f_in
- row_to_write = []
- for num in row:
- # per ogni numero presente nella riga verifico
- # la presenza nella lista dei numeri primi
- # se presente li preparo per inserirli in f_out
- if int(num) in prime_number:
- row_to_write.append(num)
- # verifico la lunghezza della riga da inserire in f_out
- if len(row_to_write) < 10:
- count = 10 - len(row_to_write)
- while count > 0:
- # inserisco gli zeri per arrivare alla lunghezza di 10
- row_to_write.append(str(0))
- count -= 1
- # scrivo il file
- writer.writerow(row_to_write)
- # f_in si chiude da solo quando esce dal blocco with
- # chiudo il file f_out.
- f_out.close()
- def create_csv_inverse():
- # preparo i file da lavorare
- f_out = open('tabella_numeri_inversa.csv', 'w')
- # creo un writer per scrivere il csv
- writer = csv.writer(f_out, delimiter=';')
- with open('tabella_numeri_new.csv', 'r') as f_in:
- for row in csv.reader(f_in, delimiter=';'):
- # scrivo la riga inversa
- writer.writerow(row[::-1])
- # f_in si chiude da solo quando esce dal blocco with
- # chiudo il file f_out.
- f_out.close()
- if __name__ == '__main__':
- # invoco la funzione con numero finale 100 (max numero presente nel csv)
- prime_number = crivello(100)
- create_csv_prime_number(prime_number)
- create_csv_inverse()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement