首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python和/或语句?

Python和/或语句?
EN

Stack Overflow用户
提问于 2014-10-23 07:47:52
回答 2查看 346关注 0票数 0

这里的一年级Comp理科学生:P

我搞不懂为什么这段代码不能像我期望的那样工作( while循环只是为了方便我检查情况):

代码语言:javascript
运行
复制
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“,为第二个输入输入”math271“,则只会打印”先决条件已满足“。

EN

回答 2

Stack Overflow用户

发布于 2014-10-23 08:02:30

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

代码语言:javascript
运行
复制
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操作符检查左侧的项是否包含在右侧的集合中(在本例中,( )指示右侧是一个元组)。

票数 5
EN

Stack Overflow用户

发布于 2014-10-23 12:54:01

为了给您更多的灵活性,可以尝试regexes:

代码语言:javascript
运行
复制
if (re.match('CPSC (219|233|235)', cpscCourseTaken) and\ 
   re.match('MATH (271|273)', mathCourseTaken)):

或一些模糊性,以允许空白

代码语言:javascript
运行
复制
if (re.search('CPSC\s+(219|233|235)', cpscCourseTaken) and\ 
   re.search('MATH\s+(271|273)', mathCourseTaken)):
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26519265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档