如何在Python中实现其他函数

0 投票
1 回答
1793 浏览
提问于 2025-04-18 17:07

我刚开始学习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',就打印出 '无效的用户名或密码',然后让程序回到那部分代码重新输入。其实这就是一个本地登录的脚本。

我希望用户在输入用户名和密码之前,不知道自己输入的是错误的用户名还是密码,类似于现实生活中的情况。

1 个回答

4

你需要的是一个循环,当你得到正确的答案时就跳出这个循环,否则就继续重复这个过程。

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") 

比如,如果用户名是'Bradley',密码是'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语句,就可以给它加一个else,这样就可以处理当namepwd不匹配时要执行的代码。(回去看看嵌套的if语句,你应该能明白为什么那样加else会比较困难。)

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

撰写回答