Что означают <0x0c> и <0x0b>?
Во время некоторых итераций программы эти коды символов выводятся на печать.
0x0c
- перевод строки 0x0b
- вертикальная табуляция
Вы можете найти их в таблице ASCII
Они представляют пробелы?
да, они являются частью string.whitespace
Мой оператор if в функции random_pass () не делает 'Не пропускайте коды символов в выходных данных.Вот почему я сейчас обращаюсь за помощью.
Ваше условие для проверки 0x0c
и 0x0b
никогда не выполняется, поскольку оно помещается после оператора return
в random_pass
.
Как уже предложено @ Tigre-Bleu, вы должны использовать string.ascii_letters + string.digits + string.punctuation
вместо string.printable
Кроме того, вы должны использовать криптографически сильный генератор случайных чисел при генерации паролей.Если вы используете Python> = 3.6, вы можете использовать модуль secrets
:
import secrets
import string
def random_pass(stringLength):
alphabet = string.ascii_letters + string.digits + string.punctuation
password = ''.join(secrets.choice(alphabet) for i in range(stringLength))
return password
print('Your password is:', random_pass(12))
# Your password is: 2;=1!*A.dK;+
для Python <3.6 вы можете использовать <a href="https://docs.python.org/2/library/random.html#random.SystemRandom" rel="nofollow noreferrer">random.SystemRandom()
, который будет использоватьos.urandom()
в системах, которые его поддерживают:
import random
import string
def random_pass(stringLength):
alphabet = string.ascii_letters + string.digits + string.punctuation
password = ''.join(random.SystemRandom().choice(alphabet) for i in range(stringLength))
return password
print 'Your password is:', random_pass(12)
# Your password is: V9I:+H{_>*'p