如果条件满足字符串,但是以某种方式不满足

时间:2019-10-27 18:28:42

标签: python

我需要用户输入正确的图钉格式。所以我做了一个应该做的代码。

appliedRoles

然后我输入了错误的图钉,但我得到了一个错误,因此这使我再次尝试输入格式正确的图钉。然后我输入了一个好的格式图钉,它给了我一个错误,但是随后我输入了与我在第二次尝试中输入的相同格式的图钉,我没有遇到错误。我不明白为什么会这样。输出如下:

def checkPin():
    pin = input("Please enter pin: ")
    if len(pin) > 6 or len(pin) < 6:
        print("Error only 6 characters allowed")
        checkPin()  
    if pin.isdigit()==False:
        print("Error only numbers allowed")
        checkPin() 

checkPin()     
print("Entered correct format pin")

1 个答案:

答案 0 :(得分:0)

返回对checkPin的第一次递归调用时,您正在检查 first 输入abc的数字,而不是递归调用中输入的数字。

如果您使用return checkPint(),则可以避免不必要地再次检查原始的错误输入。

def checkPin():
    pin = input("Please enter pin: ")
    if len(pin) > 6 or len(pin) < 6:
        print("Error only 6 characters allowed")
        return checkPin()  
    if pin.isdigit()==False:
        print("Error only numbers allowed")
        return checkPin() 

或使用elif

def checkPin():
    pin = input("Please enter pin: ")
    if len(pin) > 6 or len(pin) < 6:
        print("Error only 6 characters allowed")
        checkPin()  
    elif pin.isdigit()==False:
        print("Error only numbers allowed")
        checkPin() 

但是,您根本不应仅使用递归来实现循环。

def checkPin():
    while True:
        pin = input("Please enter pin: ")
        if len(pin) > 6 or len(pin) < 6:
            print("Error only 6 characters allowed")
        elif pin.isdigit()==False:
            print("Error only numbers allowed")
        else:
            break