手头的任务非常简单,制作一个简短的程序,要求提供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==
中的比较存在问题,我该怎么做才能使这个工作?任何和所有的帮助将不胜感激。
答案 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")
这应该是有效的代码。但为什么呢?
if
,while
,for
,def
等)后面必须跟冒号(:
)。< / LI>
or
语句不起作用。您需要单独检查每个条件,或执行以下操作:if cpsc in [217, 219, 233]
。答案 2 :(得分:0)
您的表达式==(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]: