我需要用户输入正确的图钉格式。所以我做了一个应该做的代码。
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")
答案 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