У меня есть этот генератор паролей, который вычисляет комбинацию длиной от 2 до 6 символов из списка, содержащего маленькие буквы, заглавные буквы и цифры (без 0) - вместе 61 символ.
Все, что мне нужно, это показать процент (с шагом 5) уже созданных комбинаций. Я попытался вычислить все комбинации выбранной длины, из этого числа граничное значение (5-шаговые значения) и подсчитать каждую комбинацию, записанную в текстовом файле, и когда, когда количество комбинаций соответствует граничному значению, выведите xxx % completed
, но этот код не работает.
Знаете ли вы, как легко показать процент, пожалуйста?
Извините за мой английский sh, я не являюсь носителем языка.
Спасибо всем!
def pw_gen(characters, length):
"""generate all characters combinations with selected length and export them to a text file"""
# counting number of combinations according to a formula in documentation
k = length
n = len(characters) + k - 1
comb_numb = math.factorial(n)/(math.factorial(n-length)*math.factorial(length))
x = 0
# first value
percent = 5
# step of percent done to display
step = 5
# 'step' % of combinations
boundary_value = comb_numb/(100/step)
try:
# output text file
with open("password_combinations.txt", "a+") as f:
for p in itertools.product(characters, repeat=length):
combination = ''.join(p)
# write each combination and create a new line
f.write(combination + '\n')
x += 1
if boundary_value <= x <= comb_numb:
print("{} % complete".format(percent))
percent += step
boundary_value += comb_numb/(100/step)
elif x > comb_numb:
break