我刚刚开始学习Python而且逻辑and
似乎不起作用,例如只有myName
需要'Chris'而且myVar
可能是5并且它仍然会打印'克里斯很棒'。
我也试过使用似乎没有任何逻辑的or
另外,我甚至在if语句中尝试了myVar != 0
,这没有任何区别!
为了确认,我肯定知道and
和or
如何影响if条件。
print("Hello world")
myName = input("What is your name? ")
print("Your name is",myName)
myVar = input("Enter a number: ")
if(myName == 'Chris' and myVar == 0):
print("Chris is great")
elif(myName=='Bob'):
print("Bob is ok!")
else:
print("who are you?")
感谢任何能提供帮助的人 - 我的猜测是它与我如何配置python有关...?我肯定在运行.py文件。
答案 0 :(得分:2)
在Python 3中,input
会返回str
,但在Python 2中,input
可以返回int
。
所以,你的if语句工作正常。
>>> myVar = input("Enter a number: ")
Enter a number: 0
>>> type(myVar)
str
因此myVar == 0
永远不会成立,但myVar == '0'
是。{1}}。
因此,引用0
或将input
投射到int
myVar = int(input("Enter a number: "))
但是,请注意,如果你没有输入数字,这会引发错误,这就是为什么你应该引用0
,在我看来(除非你实际上需要某个数字)
答案 1 :(得分:2)
您遇到的问题是input
会根据输入创建一个字符串。您需要将myVar
转换为int()
的整数。
print("Hello world")
myName = input("What is your name? ")
print("Your name is",myName)
myVar = int(input("Enter a number: ")) # myVar is an int now
if (myName == 'Chris' and myVar == 0):
print("Chris is great")
elif(myName=='Bob'):
print("Bob is ok!")
else:
print("who are you?")