一、需求
从控制台输入密码时,密码变成*
二、分析
input()只能输入明文数据,无法实现变更输入数据成*。可通过msvcrt模块实现需求。
三、实现方式
"""方案二:将输入密码变成*号
msvcrt模块为Python提供许多直接与操作系统交互的方法,
getch()函数用于从控制台获取一个字符的输入
putch()函数用于将一个字符输出到控制台
"""
import msvcrt
# print(xx,flush=True),将内存中的数据直接显示在屏幕上
print('password: ', end='', flush=True)
# 以栈的形式存储输入的密码
li = []
while 1:
ch = msvcrt.getch()
#回车(enter)
if ch == b'\r':
msvcrt.putch(b'\n') # 相当于print()
print('输入的密码是:%s' % b''.join(li).decode())
break
# 退格(backspace)
elif ch == b'\x08':
if li:
li.pop() # 将栈中最后进来的元素退栈
msvcrt.putch(b'\b') # 输出一个退格(backspace),光标左移
msvcrt.putch(b' ') # 在光标位置输出空格
msvcrt.putch(b'\b') # 输出空格后,光标再进行一次左