手头的任务非常简单,制作一个简短的程序,要求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 块语句(
if
、while
、for
、def
等)后必须跟一个冒号(:
)。 - 块必须缩进才能正常工作。
or
语句不是这样工作的。您需要单独检查每个条件,或执行以下操作:if cpsc in [217, 219, 233]
。
你的表情==(a or b or c ...)
不会按照你期望的方式表现。表达式a or b, ...
进行所谓的短路评估(您可以阅读更多相关信息)。即:
>>> 1 or 2 or 3
1
基本上,在这种情况下,每个数字都解析为表达式中的第一个数字:在本例中为 217
和 217
。你需要:
if cpsc in [217, 219, 233] and math in [217 or 251]: