如何在Python上创建其他任何功能

时间:2014-08-13 08:01:38

标签: python loops authentication

我是Python的新手,在业余时间以自己的速度学习,但到目前为止,这是我的程序的一部分,我遇到了麻烦:

name = input('\nEnter username: ');
if name == 'Bradley':
    pwd = input('Enter password: ')
    if pwd == '1234':
                print("\nWelcome," , name, "")
                time.sleep(2)

command = input("\nEnter Command: ");

代码本身工作正常,但是,如果它不是'Bradley''1234',则可能有某些内容,然后打印'Invalid username or password',以及然后让它循环回到代码的那一部分。本质上它是一个本地登录脚本。

我喜欢这样的用户'在输入两者之前,他们不知道他们是否输入了错误的用户名或密码,有点像现实生活场景。

1 个答案:

答案 0 :(得分:3)

你想要的是一个循环,一旦你得到正确的答案你就会突然出现,但是否则只是再次循环。

while True:
    name = input('\nEnter username: ');
    if name == 'Bradley':
        pwd = input('Enter password: ')
        if pwd == '1234':
            print("\nWelcome," , name, "")
            time.sleep(2)
            break
    print("Invalid username or password") 

现在,如果名字是'布拉德利'并且密码是' 1234',您将break退出该循环。否则,你不会,你只会再做一遍。由于True永远是真的,你将永远这样做,直到你得到你想要的答案。


您可以使用任何类型的循环执行此操作,而不仅仅是while True。例如,如果你想给他们三次机会,然后拯救:

for i in range(3):
    name = input('\nEnter username: ');
    # etc.
else:
    print('Too many tries, go learn how to hack better')
    sys.exit(1)

  

我喜欢这样的用户'在输入两者之前,他们不知道他们是否输入了错误的用户名或密码,有点像现实生活场景。

然后将pwd = …部分移到if name == 'Bradley'部分之外:

    name = input('\nEnter username: ');
    pwd = input('Enter password: ')
    if name == 'Bradley':
        if pwd == '1234':
            # etc.

现在您已经完成了这项工作,您可以简化:

    name = input('\nEnter username: ');
    pwd = input('Enter password: ')
    if name == 'Bradley' and pwd == '1234':
        # etc.

现在您只有一个if,除非elsename匹配,否则您可以为其添加pwd代码。 (返回查看嵌套的if语句,您应该能够找出为什么很难以这种方式添加else。)

    name = input('\nEnter username: ');
    pwd = input('Enter password: ')
    if name == 'Bradley' and pwd == '1234':
        # etc.
    else:
        print("Invalid username or password")