python用户名密码_Python编写密码登录程序

要求:

用户名(_username): Python

用户密码(_passwd): python123

用户收到提示后分别输入用户名和密码,如果输入错误则返回:Invalid username or passwd. 连续输入三次不正确即退出程序,并给用户返回:you couldn't try it anymore.

分析:

1、定义用户名和用户密码,之后才能调用比对;

_username = 'Python'

_passwd = 'python123'

2、用户输入需要在提示下键入,则要用到输入功能,可以用input()函数,里面可以提示:Please type your ID, Please type your password。

username = input('Please type your ID: ')

passwd = input('Please type your password: ')

3、用户输入后需要让电脑比对输入信息与真实信息,可以用if语句或者while语句,如果条件为真则打印一条消息告诉用户可以进去:Welcome %s login the system!否则给用户返回:Invalid username or passwd.

利用if语句:

if username == _username and passwd == _passwd: #用户名和密码同时满足时才能进入系统

print('Welcome %s login the system!' % _username)

else:

print("Invalid username or passwd.")

代码到这里好像大功告成,但是运行后发现只运行了一次就停止了,要求是要三次,而代码中并没有相关的信息。因此如何设置三次呢,可以用到range()函数,利用range()函数可以打印任意区间的数值,就像这样:

>>>for i in range (1,4):

>>> print (i)

1

2

3

这里的数字123不仅可以代表数字,还可以代表任何代码块中要做的事情,其实质就是做了一件事,起名叫1,做了另一件事叫2……。因此可以把用户名与密码比对的事件当做一次事件处理。可以这样:

for i in range (1,4):

username = input('Please type your ID: ')

passwd = input('Please type your password: ')

if username == _username and passwd == _passwd: #用户名和密码同时满足时才能进入系统

print('Welcome %s login the system!' % _username)

else:

print("Invalid username or passwd.")

这样做总可以了吧,试一试,三次退出没问题了,又有了新的问题!

Please type your ID:

Please type your password:

Invalid username or passwd.

Please type your ID:

Please type your password:

Invalid username or passwd.

Please type your ID: Pyth

Please type your password: python123

Invalid username or passwd.

为什么在要退出时没有显示:You couldn't try it anymore! 要求是三次错误之后显示。

观察发现在for代码块中代码没有问题,都是一行一行解释编译出来的。题目要求是结束三次输入之后再显示You couldn't try it anymore!。因此,问题不在for之中,而是缺少了一个选择条件,即else语句,for与else同级因此缩进量相同。

for i in range (1,4):

username = input('Please type your ID: ')

passwd = input('Please type your password: ')

if username == _username and passwd == _passwd: #用户名和密码同时满足时才能进入系统

print('Welcome %s login the system!' % _username)

else:

print("Invalid username or passwd.")

else:

print("You couldn't try it anymore!")

解决了上面一个问题又来了另一个问题,不论怎么输入,程序都会执行三次后才能停止。一块分析一下,在for代码块中我们发现并没有一种退出机制,输错信息后直接跳转到了else语句,那有没有办法在执行完for语句后,如果输入符合条件就停止循环呢。这里就可以用到break语句来终止代码运行,加上试试。

if username == _username and passwd == _passwd:

print('Welcome %s login the system!' % _username)

break #break for过后,就不会执行最后面的else语句

大功告成,终于可以顺利运行了。