如何测试不正确的数据输入

时间:2019-03-27 02:20:32

标签: python

尝试创建一个while循环,以测试输入是否正确

while password_length >= MIN_PASSWORD_LENGTH or password_length <= MAX_PASSWORD_LENGTH

我的while循环应该测试密码中的最小长度和最大长度是否满足,如果不是,则用户必须再次输入,但是当我运行代码并输入一个小于最小然后大于一个的密码时,代码仍可运行的最大值。我对还要添加什么感到困惑? Arent我已经要求输入密码长度等于或大于最小长度吗?

1 个答案:

答案 0 :(得分:1)

当您使用或时,表示任一侧都对应于True,它将继续。例如:

while password_length >= MIN_PASSWORD_LENGTH or password_length <= MAX_PASSWORD_LENGTH:
# 6 >= 5 OR 6 <=10     $==>   True or True
# 1 >= 5 OR 1 <=10     $==>   False or True
# 11 >= 5 OR 11 <=10   $==>   True or False

因此,在每种情况下都有一个True值,这意味着while循环将永远持续下去。

您需要做的是在其中一个条件不满足时(即其中一个为False时)循环。在这些情况下,您要再次提示:

while not password_length >= MIN_PASSWORD_LENGTH or not password_length <= MAX_PASSWORD_LENGTH

作为改进,可以将其减少到仅此一项:

while not MAX_PASSWORD_LENGTH >= password_length >= MIN_PASSWORD_LENGTH