Как правильно отформатировать строки в Python для генератора паролей? - PullRequest
0 голосов
/ 01 февраля 2019

Итак, я пытаюсь распечатать список слов с цифрами и специальными символами.Прямо сейчас я застрял в печати слов с печатью слов с сгенерированными числами в диапазоне.

Я уже пробовал:

word = input("Enter a word\n>")
firstLetter = word[0]
firstLetter = firstLetter.upper()
length = len(word)
newWord = firstLetter + word[1:length]
print("%s \n".join([str(num).zfill(2) for num in range(0, 10)]) % newWord)

Я пытался:

word = input("Enter a word\n>")
firstLetter = word[0]
firstLetter = firstLetter.upper()
length = len(word)
newWord = firstLetter + word[1:length]
print("\n".join([str(num).zfill(2) for num in range(0, 10)]) % newWord)

Я ожидаю что-то вроде:

Password01
Password02
Password03
Password04
Password05
Password06
Password07
Password08

и т. Д.

Мои результаты:

Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
Enter a word
>pop
Traceback (most recent call last):
  File "main.py", line 8, in <module>
    print("\n".join([str(num).zfill(2) for num in range(0, 10)]) % newWord)
TypeError: not all arguments converted during string formatting

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы можете использовать заглавные буквы, чтобы изменить регистр первой буквы слова.Также ваш код для добавления номера введенного пароля неверен.

Попробуйте следующий код:

word = raw_input("Enter a word\n>")
word = word.capitalize()
for i in range(1, 10):
    print (word + '0' + str(i))

Вывод:

Enter a word
>password
Password01
Password02
Password03
Password04
Password05
Password06
Password07
Password08
Password09
0 голосов
/ 01 февраля 2019

Вы можете набрать .title() в верхнем регистре только первой буквой строки и использовать range() для генерации чисел и форматирования их с использованием f-строк:

word = input("Enter a word\n>")
word = word.title()
for x in range(1, 9):
    print(f'{word}0{x}')

Примечание :Не используйте списочное понимание, если единственная цель его использования - не генерировать список.

...