2015-01-26 3 views
0


У меня есть проект в python, где я хочу назначить имена для своих классов в центре школы в средней школе штата Мичиган. Классы, которые у меня есть, являются «1B, 2B и 3B», и когда пользователь вводит свое имя и имя класса, их класс будет проверен, чтобы убедиться, что он верен в конкретном формате «1,2 OR 3», «B», - поэтому они не могут писать «4B» или «2A», потому что эти классы не существуют.

До сих пор я разработал этот блок кода: «? 1А, 2А или 3А»Регулярное выражение имена классов школы Python для проекта Mock

while True: # This starts the whole of the while loop. 
    class_name = str(input("Please enter your class name >>")) 
    if re.match("1A" "2A" "3A", class_name): 
     print("Incorrect. Please write your class name again.") 
    else: 
     print("Your class name has been accepted") 

Как я могу проверить правильность переменной class_name, чтобы он мог соответствовать именам классной комнате Спасибо, Тейлор Хейворд.

ответ

1

Ваша логика обратная (и ваш синтаксис тоже не так). Вы не хотите тестировать набор незаконных имена классов (этот набор слишком велик) - вы хотите протестировать набор legal и повторить, если тест не удался.

while True: # This starts the whole of the while loop. 
    class_name = input("Please enter your class name >>") # str() is unnecessary 
    if class_name not in {"1B", "2B", "3B"}: 
     print("Incorrect. Please write your class name again.") 
    else: 
     print("Your class name has been accepted") 
     break # Exit the while loop 

Регулярное выражение также возможно:

if not re.match("[123]B$", class_name): 

Обратите внимание на $anchor, чтобы гарантировать, что матч закончится после B, в противном случае вход как 2BC будет принят регулярным выражением (re.match() только анкеры матча к началу строки, а не к концу).

Смежные вопросы