我在python有一个项目,我想在密歇根高中的学校里为我的班级分配名字。我所拥有的课程是' 1B,2B和3B'当用户输入他们的姓名和课堂名称时,他们的课程将被验证以确保其在特定格式中是正确的,#1; 2 OR 3',' B' - 所以他们不能写' 4B'或者' 2A'因为那些类不存在。
到目前为止,我已经开发了这段代码:
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变量,以便它可以匹配教室名称' 1A,2A或3A?'谢谢, 泰勒海沃德。
答案 0 :(得分: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()
锚点匹配到字符串的开头,而不是结束。)