Python validate_pin在预期为True时返回False

Python validate_pin在预期为True时返回False,python,parameters,boolean,Python,Parameters,Boolean,我正在编写一个函数,如果pin参数是长度正好为4或6位的int,则该函数应返回True,如果是其他参数,则返回False 下面的代码按预期返回True: def validate_pin(pin): if type(pin) == int and len(str(pin)) == 4: return True elif type(pin) == int and len(str(pin)) == 6: return True else:

我正在编写一个函数,如果
pin
参数是长度正好为4或6位的
int
,则该函数应返回
True
,如果是其他参数,则返回
False

下面的代码按预期返回
True

def validate_pin(pin):
    if type(pin) == int  and len(str(pin)) == 4:
        return True
    elif type(pin) == int and len(str(pin)) == 6:
        return True
    else:
        return False

print(validate_pin(1234))
虽然下面的代码返回
False
,但当我希望它返回
True
时,我不知道其他
pin
参数是否应该是
True

def validate_pin(pin):
    if type(pin) == int  and len(str(pin)) == 4:
        return True
    elif type(pin) == int and len(str(pin)) == 6:
        return True
    else:
        return False

print(validate_pin(0000))

我该怎么处理这件事?任何其他反馈也非常感谢:)

问题是0000等于0(您可以使用print(0000==0)检查它,它将返回True) 必须将pin作为字符串传递给checker方法,才能将0000作为字符串,这是我的示例代码:



def validate_pin(pin: str) -> bool:
    try:
        # If it's not an integer it will raise a ValueError exception
        parsed_pin = int(pin)
        pin_length = len(pin)
        return pin_length == 4 or pin_length == 6

    except Exception as e:
        return False


print(validate_pin('0000'))