当地小学的借书证 ID 格式如下: ID 以“s”(代表“学生”)开头,长度正好为 6 个字符,包括“s”;或者它们以“t”(代表“老师”)开头并且没有长度要求。下面的函数应该得到一个有效的 ID,但它缺少它的 while 条件。
def get_valid_id():
'''Prompt the user for and return a valid library card ID.'''
s = raw_input("Enter ID: ")
while ?????:
s = raw_input("Try again: ")
return s
以下是 while 循环的一些可能条件。对于每个,指出它是否会使功能正常工作。
这种情况会使功能正常工作吗?
(s[0] != "s") and (len(s) != 6) and (s[0] != "t")
这种情况会使功能正常工作吗?
not( (s[0] == "s" and len(s) == 6) or (s[0] == "t") )
我不明白为什么 1 的答案是否定的,而 2 的答案是肯定的。我认为第一个问题会起作用,因为它都是“和”,而第二个问题我认为“或”不会使它起作用..有人可以向我解释一下吗?