2

手头的任务很简单,编写一个简短的程序,要求 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==and中的比较有问题,math==我该怎么做才能使这项工作?任何和所有的帮助将不胜感激。

4

3 回答 3

5

对不起,我笑了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))。在这里,您实际上是在执行逻辑比较,使用oras 运算符(单击链接,它在 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): "))

就是这样..希望这会有所帮助!

于 2013-10-25T03:35:17.077 回答
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等)后面必须跟一个冒号(:)。
  • 块必须缩进才能正常工作。
  • or声明不是那样工作的。您需要单独检查每个条件,或执行以下操作:if cpsc in [217, 219, 233].
于 2013-10-25T03:27:49.593 回答
0

你的表情==(a or b or c ...)不符合你的预期。该表达式a or b, ...经历了所谓的短路评估(您可以阅读有关此内容的更多信息)。IE:

>>> 1 or 2 or 3
1

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

if cpsc in [217, 219, 233] and math in [217 or 251]:
于 2013-10-25T03:32:19.623 回答