先决条件的简单比较不起作用



手头的任务非常简单,制作一个简短的程序,要求cpsc先决条件(数字217,219或233)和数学先决条件(217或251),如果你有其中一个类作为先决条件,那么它应该说先决条件满足,如果没有,那么先决条件不满足。我的代码如下(不要笑,字面意思是最大的python菜鸟):

cpsc=input("Which cpsc course have you taken (only pick one): ")
math=input("which math course have you taken (only pick one): ")
if cpsc==(217 or 219 or 233) and math ==(217 or 251)
    print("prerequisites met")
else:
    print("prerequisites not met")

我拥有的每个输入都只给我 else 打印,我假设这是 cpsc==math==中的比较问题,我能做些什么来使这项工作? 任何和所有的帮助将不胜感激。

对不起,我笑了XD

开玩笑,但是..哈哈哈。好的,对不起。让我们进入正题。

为什么它没有提供所需的输出?

你的 if 语句有一点问题。尝试在您的交互:)中对此进行测试

a = 233
if a == (217 or 219 or 233):
    print (True)
else:
    print (False)

这将打印False 。你知道为什么吗?

实际上,在您的情况下使用or(217 or 219 or 233)有点不对劲。(您可以尝试评估(217 or 219 or 233))。在这里,您实际上是在执行逻辑比较,使用 or 作为运算符(单击链接,它是 C 语言,但应该很容易理解)。

为了解决这个问题

您可以使用in运算符,将"所需"值设置为列表:

if a in [217, 219, 233] and math in [217, 251]:
    #do something

编辑:)

啊,是的。我忘了提到上面的代码暂时还不起作用。你还错过了一件事。

什么?事实上,input总是给你一个字符串。因此,如果a具有"217"作为其值,它仍然不起作用,因为217(整数)不等于"217"(字符串)。

要解决此问题,请使用int()函数将输入转换为整数。

cpsc = int(input("Which cpsc course have you taken (only pick one): "))
math = int(input("which math course have you taken (only pick one): "))

就这样。。希望这有帮助!

欢迎来到 StackOverflow 和 Python!我将纠正几个错误并解释您需要知道的内容。

cpsc=input("Which cpsc course have you taken (only pick one): ")
math=input("which math course have you taken (only pick one): ")
if (cpsc == 217 or cpsc == 219 or cpsc == 233) and (math == 217 or math == 251):
    print("prerequisites met")
else:
    print("prerequisites not met")

这应该是工作代码。但是为什么?

  • Python 块语句(ifwhilefordef等)后必须跟一个冒号(:)。
  • 块必须缩进才能正常工作。
  • or语句不是这样工作的。您需要单独检查每个条件,或执行以下操作:if cpsc in [217, 219, 233]

你的表情==(a or b or c ...)不会按照你期望的方式表现。表达式a or b, ...进行所谓的短路评估(您可以阅读更多相关信息)。即:

>>> 1 or 2 or 3
1

基本上,在这种情况下,每个数字都解析为表达式中的第一个数字:在本例中为 217217。你需要:

if cpsc in [217, 219, 233] and math in [217 or 251]:

最新更新