python :while statment с несколькими логическими тестами

Местная начальная школа имеет идентификаторы читательских билетов следующего вида :идентификаторы либо начинаются с "s" (для "студента" )и имеют длину ровно 6 символов, включая «s», или они начинаются с «t» (для «учителя» )и не имеют требований к длине. Предполагается, что следующая функция получает действительный идентификатор, но это отсутствует условие 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. Для каждого укажите, будет ли оно обеспечивать правильную работу функции.

  1. Будет ли это условие обеспечивать правильную работу функции?(s[0] != "s") and (len(s) != 6) and (s[0] != "t")

  2. Приведет ли это условие к корректной работе функции?not( (s[0] == "s" and len(s) == 6) or (s[0] == "t") )

Я не понимаю, почему ответ на 1 — нет, а на 2 — да. Я думал, что первый вопрос будет работать, так как это все «и», а второй вопрос, я думал, что «или» не заставит его работать... может кто-нибудь, пожалуйста, объясните мне это?

0
задан Mat 23 February 2013 в 15:21
поделиться