上Python课的时候留了一个课后练习:请实现一个用户登录系统(用户名不做要求,密码:(系统无法显示这三个字母)),如果密码错误则反复提示让用户重新输入,直到输入正确才停止。
我写的代码(如图1),存在的问题如下:
❶第四行加了print 导致错误的密码会被打印出来
❷密码正确以后依旧显示重新输入密码
图二,第四行需要重新给key赋值才行,否则key的值一直都是你首次输入的uuyyy,在循环里出不来了
key=input('密码错误,请重新输入')
循环里改成key = input(....)
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
您的第一个代码存在的问题是在密码错误时会将错误密码打印出来,可能会带来安全隐患。另外,即使密码正确,也会继续提示重新输入密码,因为没有在密码正确时跳出循环。
您的第二个代码已经解决了第一个问题,但是仍然存在第二个问题,即密码正确时会继续提示重新输入密码。这是因为您在 while 循环外定义了一个变量 flag
,而在循环内修改了 flag
的值,但是没有跳出循环。因此,即使密码正确,flag
的值也会被修改为 False
,导致循环继续执行。
要解决这个问题,您可以将 flag
的定义和修改放在循环内部,并在密码正确时使用 break
语句跳出循环。例如:
password = ''
while True:
password = input('请输入密码:')
if password == '***':
print('密码正确')
break
else:
print('密码错误,请重新输入')
print('登录成功')
在这个代码中,我们将 flag
改为了一个无限循环 while True
,并在循环内部定义了 flag
变量。当密码正确时,使用 break
语句跳出循环,否则继续循环。在循环结束后,输出登录成功的提示信息。
另外,为了防止密码被打印出来,您可以使用 getpass
模块来隐藏输入的密码,例如:
import getpass
password = ''
while True:
password = getpass.getpass('请输入密码:')
if password == '***':
print('密码正确')
break
else:
print('密码错误,请重新输入')
print('登录成功')
这样,用户输入的密码就不会被显示在屏幕上了。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
id=input('请输入你的用户名:')
key=input('请输入你的密码:')
while key!='uuu':
key = input('密码错误,请重新输入:') #这个位置你没有给输入的数据赋值,所以导致一直输入,没有退出循环
print('登录成功')