Python中的字符格式
我是Python的初学者。。。我想使用元组和列表的基本概念和操作格式化Python中的字符,如下所示Python中的字符格式,python,list,tuples,Python,List,Tuples,我是Python的初学者。。。我想使用元组和列表的基本概念和操作格式化Python中的字符,如下所示 输入10位数字,除最后4位数字外,所有数字均应替换为“X”。例如。 数字=1234567890 预期输出为- 编号=XXXXXX 7890 如何在Python中使用元组/列表概念屏蔽输入的字符/数字,而不是通过导入任何模块或现有高级函数。可能吗? 例如,对于输入的某些字符,在输入时应使用*(星号)或#(散列)屏蔽这些字符。例如。 密码:pa55w0rd 输入密码时需要输出为- 密码:****
对于像密码这样敏感的东西,最好使用内置模块。一种方法是:
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('######')
它不必具有相同的长度,您只需打印一些内容。分解所需内容:您需要转换为字符串,计算要替换的字符数,生成该长度的替换字符串,然后包含原始字符串的尾部。此外,您还需要对短到无法替换任何字符的字符串保持健壮
'X' * max(0, len(str(number)) - 4) + str(number)[-4:]
第二部分:使用库
直接这样做比初学者看起来要复杂得多,因为您必须与接收文本输入的系统进行通信。这将取决于操作系统,Windows和“大致上所有其他东西”。对于web浏览器或GUI之外的文本输入,大多数系统都在模拟古代的纯文本终端设备,因为还没有足够的理由改变这一点。这些设备具有文本输入模式(一次输入字符、一次输入行、原始等),并立即将其更改为非“回显”键入的字符涉及一些复杂的系统调用,然后进行其他编程以回显不同的字符
因此,您需要使用一个库来为您处理所有这些复杂的细节。一些关于密码输入的东西。考虑到安全问题,我强烈鼓励使用经过测试和强化的代码,而不是自己编写代码。请注意,在密码处理方面也存在各种各样的问题(恒定时间比较、内存处理等),因此您应该尽可能避免这样做,或者将其移动到另一个程序中,并且在处理密码时,使用现有的库
如果可以,请坚持使用不会对密码进行任何回显的,而不是打印星号
如果你真的想要星星,那么搜索getpass并查看人们制作的所有变体。我快速看了一眼,看到的大多数都没有激发信心;看起来比其他的好,但我没有用过。你已经试过什么了?我学到了字符不能编辑(不变)。正在尝试创建一个分配有“1234567890”的变量,并将其转换为列表,然后使用索引切片替换数字,然后使用“.join()函数等,但无法进行太多操作。Python有一个用于输入密码的标准函数。是的,我看到了关于使用
getpass()
屏蔽字符的其他现有帖子。。。我只是想知道,除了,有没有可能在没有getpass()
的情况下进行掩蔽,谢谢@Bhishan提供的信息@devPython您可以通过单击答案上的向上箭头按钮来感谢。祝你好运