首页 > 解决方案 > 搞乱这个小python递归函数?

问题描述

我在 python 中创建了这个递归函数,只是为了尝试进行登录提示,如果Ctrl+C按下,则不应终止程序,但我无法猜测为什么if语句在其中不起作用!运行时,即使条件满足,它也总是需要输入。当输入正确的 pswd 时,它不应该退出程序吗?这是我的代码...

import sys

def lock():
    try:
        pswd = input('Enter your password : ')
        if pswd == '123':
            sys.exit()
        else:
            lock()
    except KeyboardInterrupt:
        lock()

lock()

它应该在pswd == '123'. 但结果是:

Enter your password : 6237
Enter your password : 123
Enter your password : 123
Enter your password : 123
Enter your password : kj
Enter your password : 123
Enter your password : 

即使 pswd 正确,它也会不断询问密码!提前致谢!:)

标签: python-3.x

解决方案


您的代码似乎没有任何问题。它对我来说很好用Python 3.7.5 (default, Nov 7 2019, 10:50:52) [GCC 8.3.0] on linux

只要确保在密码提示的末尾没有任何尾随空格即可。

尝试这个:

import sys


def lock():
    try:
        pswd = input('Enter your password : ').rstrip()
        if pswd == '123':
            sys.exit()
        else:
            lock()
    except KeyboardInterrupt:
        lock()


lock()

输出:

Enter your password : abc
Enter your password : 123 
Process finished with exit code 0

推荐阅读