首页 > 解决方案 > 为什么我的代码返回两个结果而不是一个

问题描述

我正在为密码控制器编写一个简单的代码,如果字符串包含少于 8 个字符,则返回 false,如果字符串包含 8 个或更多字符,则返回 false。但我得到两个响应,一个是真或假,另一个结果是 <function password at 0x00000272BA8B7F70>。

这是我写的代码:

def password(str):
    if len(str) >= 8:
        print("true")
    else:
        print("false")
    return password
print(password("gtbd"))

标签: pythonif-statement

解决方案


第一个输出 ( trueor false) 是因为您的函数在您调用它时正在执行此操作,通过print("true")or print("false")

第二个输出是因为您的函数返回自身:

return password

...并在调用它时打印该返回值(函数):

print(password("gtbd"))

如果您希望它print打印trueor false请不要在函数中打印它,并从函数中返回它:

def password(str):
    return len(str) >= 8

或者,如果您希望函数返回字符串而不是布尔值:

def password(s):
    return str(len(s) >= 8)

(请注意,我必须更改参数的名称。)

如果你真的想要小写:

def password(s):
    return str(len(s) >= 8).lower()

或者,当然,手动进行:

def password(s):
    if len(s) >= 8:
        return "true"
    return "false"

推荐阅读