Я новичок в Python ... Я хотел бы отформатировать символы в Python, используя основные концепции и операции кортежей и списков, как показано ниже ...
number = 1234567890
Ожидая выхода как -
number = XXXXXX7890
password : pa55w0rd
Ожидая вывода при вводе пароля как -
password : ********
ИЛИ
password: ########
Я узнал, что символы нельзя редактировать (неизменяемые). Пытался создать переменную, назначенную с помощью '1234567890', преобразовать ее в список и заменить числа с помощью индексации, а затем с помощью функции "" .join () и т. д., Но не смог продолжить.
Да, я видел другие существующие сообщения о маскировке персонажей с помощью getpass() ... просто хотел знать, кроме того, есть ли возможность сделать маскировку без этого getpass()






Всегда лучше использовать встроенные модули для таких важных вещей, как пароль. Один из способов сделать это:
import getpass
number = 1234567890
first = 'X' * max(0,len(str(number)[:-4]))
last = str(number)[-4:]
n = first + last
print(n)
# part 2
p = getpass.getpass(prompt='Enter the number : ')
if int(p) == 123:
print('Welcome..!!!')
else:
print('Please enter correct number..!!!')
Если вы не хотите отображать введенный пароль, просто напечатайте:
print('######')
Он не обязательно должен быть одинаковой длины, вам просто нужно что-то напечатать.
Спасибо @Bhishan за информацию ?
@devPython вы можете поблагодарить, нажав кнопку со стрелкой вверх в ответе. Удачи.
Разбейте то, что необходимо: вам нужно преобразовать в строку, чтобы выяснить, сколько символов нужно заменить, сгенерировать заменяющую строку такой длины, а затем включить хвост исходной строки. Также вы должны быть устойчивы к, например, слишком коротким строкам, чтобы можно было заменить какие-либо символы.
'X' * max(0, len(str(number)) - 4) + str(number)[-4:]
Для второй части: воспользуйтесь библиотекой.
Сделать это напрямую более сложно, чем может показаться новичку, потому что вам нужно взаимодействовать с системами, которые принимают текстовый ввод. Это будет зависеть от операционной системы, Windows против «примерно всего остального». Для ввода текста вне веб-браузера или графического интерфейса большинство систем эмулируют старые текстовые терминальные устройства, потому что пока нет достаточных оснований для изменения этого. У этих устройств есть режимы ввода текста (символ за раз, строка за раз, необработанный и т. д.), И изменение их на нет немедленно "эхо" набираемого символа включает в себя некоторые сложные системные вызовы, а затем другое программирование для отображения другого символа вместо .
Таким образом, вы захотите использовать библиотеку, чтобы позаботиться обо всех этих сложных деталях за вас. Что-то вокруг ввода пароля. Учитывая последствия для безопасности, я рекомендую сильно использовать проверенный и усиленный код вместо того, чтобы катить собственный. Имейте в виду, что существуют всевозможные проблемы, связанные с обработкой паролей (постоянное сравнение времени, обработка памяти и т. это, используйте существующие библиотеки.
Если можете, придерживайтесь Стандартная библиотека Python и используйте Getpass, который ничего не будет отображать для паролей, вместо того, чтобы печатать звездочки.
Если вам действительно нужны звезды, поищите в https://pypi.org/ getpass и просмотрите все варианты, созданные людьми. Большинство из тех, что я видел беглым взглядом, не внушали доверия; пизектоолы казался лучше других, но я его не использовал.
Что вы уже пробовали?