Python 3.x Python和/或语句?

Python 3.x Python和/或语句?,python-3.x,Python 3.x,一年级理工科学生:p 我不明白为什么这段代码没有像我预期的那样工作(while循环只是为了方便我检查用例): 只有在第一次输入时输入“CPSC 219”,第二次输入时输入“MATH 271”,才能打印“满足先决条件”。解决此问题的一种方法是使用中的: if cpscCourseTaken in ("CPSC 219", "CPSC 233", "CPSC 235")\ and mathCourseTaken in ("MATH 271", "MATH 273"): 发布的代码首先计算“C

一年级理工科学生:p

我不明白为什么这段代码没有像我预期的那样工作(while循环只是为了方便我检查用例):


只有在第一次输入时输入“CPSC 219”,第二次输入时输入“MATH 271”,才能打印“满足先决条件”。

解决此问题的一种方法是使用
中的

if cpscCourseTaken in ("CPSC 219", "CPSC 233", "CPSC 235")\
   and mathCourseTaken in ("MATH 271", "MATH 273"):
发布的代码首先计算
“CPSC 219”或“CPSC 233”或“CPSC 235”
,根据Python的规则,这些值最终只是
“CPSC 235”
,然后将单个值与
CPSCCourseStake
进行比较


中的
操作符检查左侧的项是否包含在右侧的集合中(在本例中,
()
表示右侧是元组)。

解决此问题的一种方法是使用
中的

if cpscCourseTaken in ("CPSC 219", "CPSC 233", "CPSC 235")\
   and mathCourseTaken in ("MATH 271", "MATH 273"):
发布的代码首先计算
“CPSC 219”或“CPSC 233”或“CPSC 235”
,根据Python的规则,这些值最终只是
“CPSC 235”
,然后将单个值与
CPSCCourseStake
进行比较


操作符中的
检查左侧的项是否包含在右侧的集合中(在本例中,
()
指示右侧是元组)。

要给您多一点灵活性,请尝试正则表达式:

if (re.match('CPSC (219|233|235)', cpscCourseTaken) and\ 
   re.match('MATH (271|273)', mathCourseTaken)):
或者一些模糊性来允许空白

if (re.search('CPSC\s+(219|233|235)', cpscCourseTaken) and\ 
   re.search('MATH\s+(271|273)', mathCourseTaken)):

为了给您多一点灵活性,请尝试正则表达式:

if (re.match('CPSC (219|233|235)', cpscCourseTaken) and\ 
   re.match('MATH (271|273)', mathCourseTaken)):
或者一些模糊性来允许空白

if (re.search('CPSC\s+(219|233|235)', cpscCourseTaken) and\ 
   re.search('MATH\s+(271|273)', mathCourseTaken)):

如果你试着一次又一次地减少这个例子,直到奇怪的行为消失,你可以亲眼看到。最后,你会打印出“CPSC 233”或“CPSC 235”,看看发生了什么。这个策略很有帮助。如果你试图减少和减少这个例子,直到奇怪的行为消失,你可以亲眼看到。最后,你会打印出“CPSC 233”或“CPSC 235”,看看发生了什么。这个策略很有帮助。如果你确实使用正则表达式,那么锚定开始和结束是值得的,这样它就不会无意中匹配像
SMATH 2712
这样的东西。如果你确实使用正则表达式,那么锚定开始和结束是值得的,这样它就不会无意中匹配像
SMATH 2712
这样的东西。