Я написал функцию, которая сохраняет все числа между двумя группами цифр в текстовый файл, с шагом, чтобы сохранить некоторое пространство и время, и я не мог понять, как показать процентное значение, поэтому я попробовал это ,Каков наилучший способ вычисления процента операции повторения?
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..."
То, что я пытался сделать здесь был сделать программу сделать итерационные стольких раз, сколько это обычно делает это, но вместо того, чтобы писать в файл, я только что сделал percent_quotient переменного подсчета, сколько раз итерация на самом деле будет повторяться. (Я назвал переменную dunky j
, так как она там только для разрыва цикла, извините, если для этого есть другое выражение.) Вторая часть - это фактическая работа, и я помещаю переменную счетчика, и я делю ее на percent_quotient
и умножаю 100, чтобы получить процент.
Проблема в том, что когда я пытался сделать словарь с длиной от 1 до 8, на самом деле потребовалась минута, чтобы считать все. Я предполагаю, что это займет гораздо больше времени, если я захочу сделать еще больший словарь.
Мой вопрос в том, есть ли лучший/более быстрый способ сделать это?
У вашего сообщения было немного пугающей длины, поэтому я урезал некоторые из предыстории, которые, как я чувствую, многие пользователи здесь воспринимают как несущественные. Надеюсь, я не слишком много перерезал. Конечно, в качестве искателя вы можете отменить мое редактирование (как и ряд других пользователей здесь, на основе их репутации). –
Нет, все круто, извините. На самом деле, спасибо, я полагаю, что больше людей уклонятся от него, если они посчитают это слишком длинным. – Meaty