Skip to main content
 首页 » 编程设计

python:当字符串包含多个零时,检查一串整数是否大于零不起作用

2025年05月04日22xxx_UU

我有一个函数需要验证作为字符串传递给它的 pin。 pin 不能为负数,不能有字母,不能全为零,不能有特殊字符,长度必须为 4 或 6 位数字。这是我为此编写的函数:

def validate_pin(pin): 
    valid = False 
    if str.isdigit(pin): 
        if int(pin) > 0 and len(pin) == 4 or len(pin) == 6: 
            valid = True 
    return valid 

除了字符串全为零(如“000000”)之外,该函数工作正常,但我不明白为什么。

请您参考如下方法:

问题是operator precedence . or 的优先级低于 and,因此如果 len(pin ) == 6,不管条件语句的第一部分发生了什么。

代码基本上说:

if (int(pin) > 0 and len(pin) == 4) or len(pin) == 6: 

但你的意思是:

if int(pin) > 0 and (len(pin) == 4 or len(pin) == 6):