Python和/或语句?

时间:2014-10-22 23:47:52

标签: python-3.x

第一年Comp Sci学生在这里:P

我很困惑为什么这段代码不像我预期的那样工作(while循环就在那里,我可以轻松检查案例):

i = 0

while i == 0:
    cpscCourseTaken = input("What Computer course have you taken: ")
    mathCourseTaken = input("What Math course have you taken: ")


    if cpscCourseTaken == ("CPSC 219" or "CPSC 233" or "CPSC 235")\
       and mathCourseTaken == ("MATH 271" or "MATH 273"):
        print("Prerequisites met\n")
    else:
        print("Prerequisites not met\n")

如果您为第一个输入输入“CPSC 219”而第二个输入为“MATH 271”,则仅打印“满足条件”。

2 个答案:

答案 0 :(得分:5)

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

if cpscCourseTaken in ("CPSC 219", "CPSC 233", "CPSC 235")\
   and mathCourseTaken in ("MATH 271", "MATH 273"):

首先发布的代码评估"CPSC 219" or "CPSC 233" or "CPSC 235",根据Python的规则最终只是"CPSC 235",然后将该单个值与cpscCourseTaken进行比较。

in运算符检查左侧的项目是否包含在右侧的集合中(在这种情况下,( )表示右侧是元组)。

答案 1 :(得分:0)

为了给你一点灵活性,试试正则表达式:

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)):