Python中的字符格式

Python中的字符格式,python,list,tuples,Python,List,Tuples,我是Python的初学者。。。我想使用元组和列表的基本概念和操作格式化Python中的字符,如下所示 输入10位数字,除最后4位数字外,所有数字均应替换为“X”。例如。 数字=1234567890 预期输出为- 编号=XXXXXX 7890 如何在Python中使用元组/列表概念屏蔽输入的字符/数字,而不是通过导入任何模块或现有高级函数。可能吗? 例如,对于输入的某些字符,在输入时应使用*(星号)或#(散列)屏蔽这些字符。例如。 密码:pa55w0rd 输入密码时需要输出为- 密码:****

我是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您可以通过单击答案上的向上箭头按钮来感谢。祝你好运