Ho scritto una funzione che salva tutti i numeri tra gruppi di due cifre in un file di testo, con un'opzione di passaggio per risparmiare spazio e tempo, e non sono riuscito a capire come mostrare un valore percentuale, quindi ho provato questo .Qual è il modo migliore per calcolare la percentuale di un'operazione di iterazione?
for length in range(int(limit_min), int(limit_max) + 1):
percent_quotient = 0
j=0
while j <= (int(length * "9")):
while len(str(j)) < length:
j = "0" + str(j)
percent_quotient+=1
j = int(j) + int(step) # increasing dummy variable
for length in range(int(limit_min), int(limit_max) + 1):
counter=1
i = 0
while i <= (int(length * "9")):
while len(str(i)) < length:
i = "0" + str(i) #
print "Writing %s to file. Progress: %.2f percent." % (str(i),(float(counter)/percent_quotient)*100)
a.write(str(i) + "\n") # this is where everything actually gets written
i = int(i) + int(step) # increasing i
counter+=1
if length != int(limit_max):
print "Length %i done. Moving on to length of %i." % (length, length + 1)
else:
print "Length %i done." % (length)
a.close() # closing file stream
print "All done. Closed file stream. New file size: %.2f megabytes." % (os.path.getsize(path)/float((1024 ** 2)))
print "Returning to main..."
Quello che ho cercato di fare qui è stato rendere il programma fare un'iterazione tutte le volte che di solito avrebbe fatto, ma invece di scrivere su un file, ho appena fatto conteggio variabile percent_quotient quante volte l'iterazione è in realtà sta per essere ripetuto. (Ho chiamato la variabile fittizia j
poiché è lì solo per interrompere il ciclo; mi dispiace se c'è un'altra espressione per questo.) La seconda parte è il lavoro effettivo e metto la variabile contatore, e la divido con percent_quotient
e moltiplica con 100 per ottenere una percentuale.
Il problema è che quando ho provato a creare un dizionario dalla lunghezza 1 alla lunghezza di 8, in realtà ho impiegato un minuto per contare tutto. Immagino che ci vorrebbe molto più tempo se volessi creare un dizionario ancora più grande.
La mia domanda è, c'è un modo migliore/più veloce per farlo?
Il tuo post ha avuto un po 'di intimidatorio per la sua lunghezza, quindi ho rifilato alcune delle storie di fondo che ritengo che molti utenti qui percepirebbero irrilevanti. Spero di non aver tagliato troppo. Ovviamente, come richiedente, sei libero di ripristinare la mia modifica (come lo sono un numero di altri utenti qui in base al loro rappresentante). –
No, tutto a posto, mi dispiace. Infatti, grazie, immagino che più persone lo sfuggono se lo trovano troppo a lungo. – Meaty