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

时间:2013-10-25 03:25:32

标签: python

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

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

我拥有它的每一个输入只给了我打印的其他内容,我假设它在cpsc==math==中的比较存在问题,我该怎么做才能使这个工作?任何和所有的帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

抱歉,我笑了XD

开玩笑,但是......哈哈哈。哦抱歉。让我们谈谈。

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

你的if语句有一点问题。尝试在你的interpeter中进行测试:)

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的{​​{1}}值为"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): "))

这就是全部..希望这有帮助!

答案 1 :(得分:2)

欢迎使用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等)后面必须跟冒号(:)。< / LI>
  • 必须缩进块才能正常工作。
  • or语句不起作用。您需要单独检查每个条件,或执行以下操作:if cpsc in [217, 219, 233]

答案 2 :(得分:0)

您的表达式==(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]: