Форматирование символов в Python

Я новичок в Python ... Я хотел бы отформатировать символы в Python, используя основные концепции и операции кортежей и списков, как показано ниже ...

  1. Я ввожу 10-значное число и, за исключением последних 4-х оставшихся цифр, все числа должны быть заменены на «X». Например,

    number = 1234567890

Ожидая выхода как -

number = XXXXXX7890

  1. Как замаскировать введенные символы / числа в Python с использованием концепции кортежей / списков, которые не используются, путем импорта каких-либо модулей или существующих высоких функций. Является ли это возможным ? Например, введены некоторые символы, они должны быть замаскированы с помощью * (звездочка) или # (заштрихованный) при вводе. Например,

    password : pa55w0rd

Ожидая вывода при вводе пароля как -

password : ********

ИЛИ

password: ########

Что вы уже пробовали?

Reut Sharabani 25.08.2018 21:07

Я узнал, что символы нельзя редактировать (неизменяемые). Пытался создать переменную, назначенную с помощью '1234567890', преобразовать ее в список и заменить числа с помощью индексации, а затем с помощью функции "" .join () и т. д., Но не смог продолжить.

devPython 25.08.2018 21:11

Python имеет стандартную функцию getpass() для ввода паролей.

AChampion 25.08.2018 21:12

Да, я видел другие существующие сообщения о маскировке персонажей с помощью getpass() ... просто хотел знать, кроме того, есть ли возможность сделать маскировку без этого getpass()

devPython 25.08.2018 21:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
78
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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 25.08.2018 21:34

@devPython вы можете поблагодарить, нажав кнопку со стрелкой вверх в ответе. Удачи.

Bhishan Poudel 25.08.2018 21:35

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

'X' * max(0, len(str(number)) - 4) + str(number)[-4:]

Для второй части: воспользуйтесь библиотекой.

Сделать это напрямую более сложно, чем может показаться новичку, потому что вам нужно взаимодействовать с системами, которые принимают текстовый ввод. Это будет зависеть от операционной системы, Windows против «примерно всего остального». Для ввода текста вне веб-браузера или графического интерфейса большинство систем эмулируют старые текстовые терминальные устройства, потому что пока нет достаточных оснований для изменения этого. У этих устройств есть режимы ввода текста (символ за раз, строка за раз, необработанный и т. д.), И изменение их на нет немедленно "эхо" набираемого символа включает в себя некоторые сложные системные вызовы, а затем другое программирование для отображения другого символа вместо .

Таким образом, вы захотите использовать библиотеку, чтобы позаботиться обо всех этих сложных деталях за вас. Что-то вокруг ввода пароля. Учитывая последствия для безопасности, я рекомендую сильно использовать проверенный и усиленный код вместо того, чтобы катить собственный. Имейте в виду, что существуют всевозможные проблемы, связанные с обработкой паролей (постоянное сравнение времени, обработка памяти и т. это, используйте существующие библиотеки.

Если можете, придерживайтесь Стандартная библиотека Python и используйте Getpass, который ничего не будет отображать для паролей, вместо того, чтобы печатать звездочки.

Если вам действительно нужны звезды, поищите в https://pypi.org/ getpass и просмотрите все варианты, созданные людьми. Большинство из тех, что я видел беглым взглядом, не внушали доверия; пизектоолы казался лучше других, но я его не использовал.

Другие вопросы по теме