Я пытаюсь создать генератор паролей с помощью python. В настоящее время я просто хочу, чтобы программа печатала случайные символы из таблицы ascii. Позже я представлю числа и символы. Я использовал цикл for для печати случайного символа из диапазона, который вводит пользователь. Однако это работает, когда я использую end='' для печати символов в той же строке, где появляется %. Я думаю, что это нужно для того, чтобы показать, что он не напечатал символ. Я бы хотел, чтобы программа не печатала %, потому что позже я добавлю другие цифры и символы.
Я попытался вычесть 1 из диапазона чисел. В результате получилась та же строка с %, но на 1 меньше, чем предполагалось. Я также попытался создать цикл while, который будет печатать, пока переменная меньше числа пароля. Он также напечатал %.
Вот код:
import random
import string
letters=string.ascii_letters
passwordnumber=int(input("How many characters do you want your password to be? "))
for i in range(passwordnumber):
print(random.choice(letters), end='')
Ваш код отлично работает для меня. Нет %. Не знаю, откуда это может взяться. Нет % в остальное время? Как вы запускаете свой скрипт? Из оболочки Linux?
Быть уверенным. Создайте строку, содержащую сгенерированный пароль, и напечатайте последний символ. Первый: password = "".join([random.choice(letters) for _ in range(passwordnumber)])
. Тогда: print(password[-1])
Мне помог Veekxt. Это был мой терминал. Я использую vscode, и это было напоминание. Извините, я не знаю, как ответить. Спасибо за помощь.
Печать %
вашей оболочкой (может быть zsh), это означает, что строка не заканчивается на "\n"
. Это просто напоминание из оболочки. С тобой все в порядке. Вы можете просто добавить print()
в конце своего кода, чтобы напечатать "\n"
, и %
больше не будет отображаться.
Попробуй это
characters = list(string.ascii_letters + string.digits + "!@#$%^&*()")
def generate_random_password():
## length of password from the user
length = 8
## shuffling the characters
random.shuffle(characters)
## picking random characters from the list
password = []
for i in range(length):
password.append(random.choice(characters))
## shuffling the resultant password
random.shuffle(password)
## converting the list to string
## printing the list
return "".join(password)
Ваш скрипт работает абсолютно нормально на моей стороне. смотри это https://onlinegdb.com/9EagkKVW1
Если вы чувствуете, что это проблема с end
, вы можете просто объединить выходные данные в строку и сразу распечатать.
import random
import string
letters=string.ascii_letters
pas =''
passwordnumber=int(input("How many characters do you want your password to be? "))
for i in range(passwordnumber):
pas += random.choice(letters)
print(pas)
выходы #
How many characters do you want your password to be? 5
AvfYm
мы можем использовать случайный метод .sample(). он требует 2 аргумента:
- iterable of elements to use
- number of elements to take
результат не содержит дубликатов.
import random
import string
letters=string.ascii_letters
passwordnumber=int(input("How many characters do you want your password to be? "))
pas = ''.join(random.sample(letters, k=passwordnumber))
print(pas)
Странно.. У меня не показывает % см. - onlinegdb.com/9EagkKVW1